لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 03/23/21 في كل الموقع
-
بعد نقل المشروع إلى خادم الويب، تظهر لدي العديد من الأخطاء المتعلقة بجلب القيم من ملف .env فعند تجربة استخدام القيم الموجودة في ملف .env أحصل على القيمة null: env('APP_ENV') - تعطي null ولاسيما في الملف app.php بما أنه يحوي على الكثير من القيم المستدعاة من .env حاولت تنفيذ هذه الأوامر: php artisan cache:clear php artisan view:clear php artisan config:cache ولكن لم استطع حل المشكلة. ما الخطأ؟2 نقاط
-
يمكنك استخدام هذا الأمر لحل المشكلة: php artisan config:clear في حال كنت تستخدم env من داخل التطبيق يفضل استخدام التابع التالي: \Config::get('app.env'); الأوامر المهة التي عليك تنفيذها في كل مرة تتعرض لمشكلة هي: php artisan config:clear php artisan cache:clear php artisan view:clear php artisan route:clear composer dump-autoload ويمكنك اختصارها بالأمر: لارافيل 8 php artisan optimize:clear2 نقاط
-
2 نقاط
-
حسب شروط استخدام منتجات غوغل وهي الخرائط في حالتك فيوجد بند في الاتفاقية أنه من حق غوغل وضع علامتها في المنتجات و أقتبس: الرابط: google maps terms 9.4 Attribution. Content provided to you through the Service may contain the Brand Features of Google, its strategic partners, or other third-party rights holders of content that Google indexes. When Google provides those Brand Features or other attribution through the Service, you must display such attribution as provided (or as described in the Maps APIs Documentation) and must not delete or alter the attribution. You must conspicuously display the "powered by Google" attribution (and any other attribution(s) required by Google in the Maps APIs Documentation) on or adjacent to the relevant Service search box and Google search results. If you use the standard Google search control, or the standard Google search control form, this attribution will be included automatically, and you must not modify or obscure this automatically-generated attribution. Developers don't have the authority to replace the logo even though it's possible. [UPDATE] 3.2.3 Requirements for Using the Services. (b) Attribution. Customer will display all attribution that (i) Google provides through the Services (including branding, logos, and copyright and trademark notices); or (ii) is specified in the Maps Service Specific Terms. Customer will not modify, obscure, or delete such attribution. كحل برمجي, يمكنك قطع الخريطة أو وضع طبقة overlay فوقها ولكن كما ذكرت هذا يخالف شروط الاستخدام ___________ بالنسبة لأزرار التحكم في Zoom من خلال zoomControlsEnabled: false وكمثال: import 'dart:async'; import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Google Maps Demo', home: MapSample(), ); } } class MapSample extends StatefulWidget { @override State<MapSample> createState() => MapSampleState(); } class MapSampleState extends State<MapSample> { Completer<GoogleMapController> _controller = Completer(); static final CameraPosition _kGooglePlex = CameraPosition( target: LatLng(37.42796133580664, -122.085749655962), zoom: 14.4746, ); static final CameraPosition _kLake = CameraPosition( bearing: 192.8334901395799, target: LatLng(37.43296265331129, -122.08832357078792), tilt: 59.440717697143555, zoom: 19.151926040649414); @override Widget build(BuildContext context) { return new Scaffold( body: GoogleMap( mapType: MapType.hybrid, initialCameraPosition: _kGooglePlex, zoomControlsEnabled: false, onMapCreated: (GoogleMapController controller) { _controller.complete(controller); }, ), ); } }2 نقاط
-
_ قُم بتعريف ليست تحتوي على كلمات و أرقام ثم قومي بجمع الأرقام الموجودة داخل الليست.؟؟ _ قُم بأخذ مدخل نصي من المستخدم و تحويل المدخل إلى ليست بحيث يمثل كل حرف عنصر داخل الليست.؟؟1 نقطة
-
لدي كائن محفوظ في حالة المكون component state، وأريد أن أعرف هل من الممكن أن أقوم بتحديث خصائص كائن في حالة المكون بهذه الطريقة: this.state = {person: { name: 'Adam', age: 22 }} حاولت أن أجرب بنفسي الأكواد التالية: // هذا السطر يسبب syntax error this.setState({person.name: 'Ahmed'}); // بينما هذا السطر لا يفعل شيء البتة this.setState({person: {name: 'Ahmed'}}) هل يمكن فعل ذلك من الأساس أم يجب أن أغير بنية الكائن نفسه؟1 نقطة
-
1 نقطة
-
ايضا تستطيع استخدام Triple Quotes هكذا Text(''' Text1 Text2 Text3''',maxLines: 20, style: TextStyle(fontSize: 16.0 ,fontWeight:FontWeight.bold,color: Colors.black) , ) أو استخدام بشكل 'n\' مباشر بدون + Text('Welcome\nto\nMyWorld\nHello\nWorld\n'); أو استخدام + هكذا Text('hello ' + 'is ' + 'world');1 نقطة
-
1 نقطة
-
هل حاولت إضافة المحرف 'n\' بين المتغيرين, أي قبل الاسم؟ اعتبره سلسلة نصية و أضفه بعلامة +1 نقطة
-
عند عمل مشروع ك frontend كيف احدد طريقة عمله هل استخدم التقنيات الاعتيادية مثل Html, css, js ام React ، علي اي اساس ساحدد طريقة عمل المشروع وايهما افضل1 نقطة
-
العمليتين load و with متشابهتين وستحصل على نفس النتيجة فلا يوجد فارق بالنتيجة النهائية لكل منها. ولكن الفرق الوحيد هو بترتيب التنفيذ عند استخدامها: فعند استخدام with يتم أولاً تحميل المودل المرتبط عند تهيئة الاستعلام المراد تنفيذه (مثل: all أو first أو find...) $users = User::with('comments')->get(); كأننا نقوم بتنفيذ: select * from `users` select * from `comments` where `comments`.`user_id` in (1, 2, 3, 4, 5) أما عند استخدام load يتم أولاً تهيئة الاستعلام والحصول على السجلات، ثم يتم بعدها تحميل سجلات المودل المرتبطة بها. بحيث يتم تقسيمها إلى مرحلتين: $users = User::all(); كأننا نقوم باستعلام عادي select * from `users` ثم يتم تنفيذ: $users = $users->load('comments'); والتي تقوم بدورها بتنفيذ استعلام آخر منفصل select * from `comments` where `comments`.`user_id` in (1, 2, 3, 4, 5)1 نقطة
-
دالة env لن تعمل في حالة تم تخزين ملفات الـ config في الملفات المؤقتة cache. إذا كنت تستدعي env من داخل التطبيق الخاص بك، فمن المستحسن أن تقوم بإضافة هذه القيم في ملفات config واستدعاء env من هذا المكان بدلاً من ذلك. لذلك لن يعمل الأمر : php artisan config:cache بدلًا من ذلك جرب تشغل الأمر التالي: php artisan config:clear بالتوفيق.1 نقطة
-
في حال كانت القيم مرتبطة مع بعضها بشكل ما، يمكنك تمريرها ضمن مصفوفة: $data = [ 'var1' => 'somevalue', 'var2' => 4000, 'anyvar3' => 'new-value' ]; return View::make('user')->with($data); أو يمكن تمرير المصفوفة نفسها بشكل مباشر ضمن with: return $view->with('data', ['var1' => $var1, 'people' => $people])); يوجد طريقة أخرى عن طريق استخدام compact: function view($view) { $people = People::where('name', '=', 'Name')->first(); $p2 = People::order_by('list_order', 'ASC')->get(); return $view->with(compact('people', 'p2')); } حيث سيتم دمج المتحولين وإرسالهم ضمن بنفس الرد.1 نقطة
-
يمكن إضافة الصلاحيات لكل مستخدم ضمن التابع boot في AuthServiceProvider بالشكل التالي: Passport::tokensCan([ 'manage-order' => 'Manage order scope' 'read-only-order' => 'Read only order scope' ]); وضمن مسارات التوجيه نقوم بإضافة guard ضمن الوسيط يتضمن السكوب على حسب الصلاحيات التي يمكن استخدامها من قبل المستخدم: ->middleware(['auth:api', 'scopes:your-scope=key-here']); فتصبح مسارات التوجيه بالشكل التالي: Route::get('/api/orders', 'OrderController@index') ->middleware(['auth:api', 'scopes:manage-order']); Route::post('/api/orders', 'OrderController@store') ->middleware(['auth:api', 'scopes:manage-order']); Route::get('/api/orders/{id}', 'OrderController@show') ->middleware(['auth:api', 'scopes:manage-order, read-only-order']); وللتحقق من صلاحيات المستخدم، يمكننا ضمن المتحكّم الخاص بعملية تسجيل الدخول إضافة التالي: $role = $user->checkRole(); if ($role == 'admin') { $request->request->add([ 'scope' => 'manage-order' // نقوم هنا بإضافة السكوب الخاص بنوع المستخدم ]); } else { $request->request->add([ 'scope' => '.....' ]); } // تحويل الطلب وإضافة token $tokenRequest = Request::create( '/oauth/token', 'post' ); return Route::dispatch($tokenRequest); حيث سيتم التعرّف على صلاحيات المستخدم بعد إنشاء token الخاص به وتمريره مع الطلبات الواردة إلى خادم الويب باستخدام الترويسة Bearer بشكل مشابه للتالي: $response = $client->request('GET', '/api/endpoint', [ 'headers' => [ 'Accept' => 'application/json', 'Authorization' => 'Bearer '.$accessToken, ], ]);1 نقطة
-
إذا كنت تريد تغير ال state يجب أن تعطيها key مباشر وفي حالتك person وليس person.name وإذا أردت تحديث الإسم فقط وأن تبقي على ال age فأنت تحتاج ال prevState لتكون الطريقة كالآتي: this.state = {person: { name: 'Adam', age: 22 }} // الطريقة this.setState(prevState => ({ person: { ...prevState.person, // القيمة القديمة name: 'Mohammed' // تعدل الإسم } }));1 نقطة
-
الطريقة اﻷصح هي التالية: class ClassComponent extends React.Component{ constructor(){ this.clickHandler = this.clickHandler.bind(this); } // دالة عادية يتم تنفيذها عند الضغط على العنصر p clickHandler(e){ alert('Hello, World!'); } render(){ return <p onClick={this.clickHandler}>Content</p> } } لاحظ أننا نقوم بعمل binding في الباني وليس داخل render، بالنسبة للطرق الثلاثة فاﻷولى ستعمل بشكل صحيح ﻷنها تجنبك خطأ setState on undefined ولكن عمل binding عند كل render سيؤذي اﻷداء لذلك نقوم بها في الباني وليس في render. بالنسبة للطريقتين اﻷخريتين فهما صحيحتان شرط أن تقوم بعمل bind داخل الباني ، من دون bind سيظهر لك خطأ setState on undefined. مع وجود bind في الباني الطريقتان الثانية والثالثة كلاهما صحيحتان وشخصياً أفضل الطريقة الثالثة ﻷنها أقصر وﻷن الطريقة الثانية تنشئ تابع جديد عند كل render أيضاً مما قد يؤذي اﻷداء في بعض الحالات.1 نقطة
-
كيف يتم ايجاد معاملات لعدد يتم ادخاله في لغة C++ على شكل كود برمجي ..1 نقطة
-
يمكنك استخدام Widget Align بحيث سوف تتمكن من تحديد مكان الزر في أي مكان تريده أو ايضا يمكنك استخدام خاصية Stack وتقوم بتحديد top bottom right left للزر. بخصوص تغيير نوع الخريطة يمكنك استخدام خاصية MapType وتأخذ عدة أشكال none roadmap satellite terrain hybrid1 نقطة
-
يستخدم React Router مكتبة تدعى path-to-regexp لفهم المسار المعطى. لذلك، تستطيع استخدام Regular Expressions بداخل المسار: <Route path="/(home|post|page)/" component={Page} /> أيضاً، تقبل الخاصية path نوعان من المعطيات: string او مصفوفة من strings. لذلك، يمكنك استخدام مصفوفة بهذا الشكل: <Route path={["/home", "/page", "/post"]} component={Page} />1 نقطة
-
ايضا يمكنك استخدام zoomGesturesEnabled: false, zoomControl: false,1 نقطة
-
يمكنك استخدام مكون عالي المستوى لتحقيق ذلك. import React from 'react'; import { TouchableWithoutFeedback, Keyboard, View } from 'react-native'; const DismissKeyboard = Comp => { return ({ children, ...props }) => ( // TouchableWithoutFeedback // .يعمل عن طريق جعل أحد المكونات ملموسًا، ولكن دون أن يستجيب بتعليقات مرئية <TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}> <Comp {...props}> {children} </Comp> </TouchableWithoutFeedback> ); }; const DismissKeyboardView = DismissKeyboard(View) والآن يمكنك إستخدامها هكذا: const Test = () => { return ( <DismissKeyboardView> <TextInput /> </DismissKeyboardView> ); };1 نقطة
-
يمكنك استخدام مرجع متعلق بمكون وبمساعدة خطافات react الامر يصبح سهل جدا import React, { useRef, useEffect } from 'react'; export default function App() { const node = useRef(); const handleClick = (e) => { if (node.current.contains(e.target)) { console.log('تم الضغط داخل المكون'); return; } console.log('تم الضغط خارج المكون'); }; useEffect(() => { // اضافة عند التشغيل document.addEventListener('mousedown', handleClick); // ازالة عند توقف التشغيل return () => { document.removeEventListener('mousedown', handleClick); }; }, []); return <div ref={node}>...........</div>; }1 نقطة
-
قم بتحميل بلجن module-resolver لـ Babel: yarn add --dev babel-plugin-module-resolver وبداخل ملف الـ configurations في tsconfig.json، قم بضبط المسارات هكذا: { "compilerOptions": { "paths": { "@app/*": ["app/*/index", "app/*"] } } } والآن، سنستخدم الـ plugin الذي قمنا بتحميله: module.exports = { presets: ['module:metro-react-native-babel-preset'], plugins: [ [ require.resolve('babel-plugin-module-resolver'), { cwd: 'babelrc', extensions: ['.ts', '.tsx', '.js', '.ios.js', '.android.js'], alias: { '@app': './app' } } ], 'jest-hoist' ] }; بعدها، قم بعمل restart للـ IDE، وستجد نفسك قادراً على استعمال المسارات بهذا الشكل: import constants from '@app/constants';1 نقطة
-
1 نقطة
-
مرحباً مها، في الحالات العادية بعد إنهاء الطالب كافة مسارات الدورة يقوم بالتقديم على الإمتحان من خلال التواصل مع فريق الدعم عن طريق فتح تذكرة عبر مركز المساعدة لحجز موعد لإجراء الإمتحان، لكل بخصوص طلبة منحة البنك الدولي لم يتم إعلامنا بالإجراءات لا ندري هل سيتبعون نفس الإجراءات أم إجراءات أخرى، حالياً عليك التركيز في فهم مسارات الدورة و بعد ذلك لكل حادث حديث تأكدي أنه يُمكنك في أي وقت التواصل مع فريق الدعم و سيوضحون لك أي شيئ ترغبين به. بالتوفيق.1 نقطة
-
يمكنك عمل هذا عن طريق ال ref import React, { Component } from 'react'; export default class OutsideAlerter extends Component { componentDidMount() { document.addEventListener('mousedown', this.handleClickOutside); } componentWillUnmount() { document.removeEventListener('mousedown', this.handleClickOutside); } // عند الضغط بالماوس عل الصفحة handleClickOutside = (event) => { // نتحقق هل العنصر لديه حدث mousedown أم لا if (this.wrapperRef && !this.wrapperRef.current.contains(event.target)) { // إذا لم يحتوي على الحدث alert('لقد قمت بالنقر خارج المحتوى الخاص بي'); } } render() { // نقوم بإعطاء العنصر ref return <div ref={ref => this.wrapperRef =ref }>{this.props.children}</div>; } }1 نقطة
-
React لا تقوم بمقارنة ال value الجديدة التي تقوم بتعينها هو فقط يضعها ويقوم بعمل render ولكن هناك بعض الطرق من الممكن أن تستخدمها لمنع حدوث render مثلا التحكم في ال render نفسه من خلال shouldComponentUpdate ومقارنة الحالة القديمة بالجديدة shouldComponentUpdate(nextProps, nextState) { if (this.state.test !== nextState.test) { // في حالة كانت القيم مختلفة قم بعمل render return true; } return false; // غير ذلك لا يقوم بعمل render } هذا النمط يستخدم في حالة كانت ال state بسيطة وغير معقدة أما إذا كانت معقدة تستخدم مثلاً طريقة لعمل shallow comparison بين ال state و ال props والقرار يرجع لك متى تقوم بعمل render1 نقطة
-
الكود الخاص بك (.لا يوجد به أخطاء ويعمل بطريقة صحيحة ) وذلك لأنك تستخدم ال arrow function والتي تعمل bind تلقائي للكلاس ولن تحتاج عمل bind في ال constructor ولذلك يجب عليك إزالة السطر الموجود في ال constructor أما إذا لم تكن تستخدم ال arrow function فيجب أن تعمل constructor bind بهذه الطريقة this.increaseCounter = this.increaseCounter.bind(this);1 نقطة
-
السطر الذي أضفته ليس الطريقة الصحيحة بل هذه: this.increaseCounter = this.increaseCounter.bind(this); الهدف اﻷصلي من التعليمة أن arrow function الممرر للـonClick لها قواعد خاصة من ناحية this هذه القواعد تمنع الوصول إلى Component instance وبدلاً من ذلك تكون this مساوية لـundefined. لكن بعد تنفيذ التعليمة السابقة أنت تجعل increaseCounter يأخذ الـthis دائماً من Component instance لهذا سمي التابع بـbind وهو للعلم تابع جافاسكريبت عادي ليس مخصوصاً بالـReactJS ، كل ما هنالك أن استعماله في React class components شائع جداً. بالطبع مع وجود react hooks يمكنك كتابة functional components وحينها لن تحتاج إلى عمل أي binding ﻷنه حينها لا يوجد class لتقوم بعمل this.1 نقطة
-
أولاً لماذا تريد اﻻستيراد بشكل ديناميكي؟ هل لتختار بين عدة components أيها يجب أن تضع؟ حينها استعمل ؟: هكذا: import React from 'react'; import Page1 from './page1' import Page2 from './page2' export default function App() { return ( <div> <h1>react app</h1> {someCondition ? <Page1 /> : <Page2 />} </div> ); } اﻻستيراد الديناميكي يستخدم فقط حين تريد تطبيق ما يسمى code splitting وهي تقنية لتسريع اﻷداء هدفها فصل جزء من الكود لتحميله فقط عند الحاجة إليه بدلاً من تحميله دائماً بغض النظر عن استخدام الصفحة الحالية له. إن كان هدفك هو code splitting فأنا أنصح باستخدام مكتبة loadable-components الموجودة في هذا الرابط : https://loadable-components.com/ باستخدام مكتبة loadable-components نكتب اﻵتي: import React, { Suspense } from 'react'; import loadable from '@loadable/component' const OtherComponent = loadable(() => import('./OtherComponent'), { fallback: <div>Loading...</div>, }); function MyComponent() { return ( <div> <OtherComponent /> </div> ); } لاحظ أننا نستخدم import كتابع اﻵن، حين استعمالها كتابع يرد هذا التابع Promise حين انتهائه يرد webpack module وطريقة الفصل هذه مبرمجة ضمن webpack نفسه، كل ما تفعله loadable-components هو تسهيل التعامل مع dynamic import فقط لا غير فمن اﻷشياء التي تؤمنها مثلاً معامل fallback الممرر أعلاه، ما هذا المعامل؟ كما قلت هدف code splitting هو فصل جزء من الكود وتحميله فقط عند الحاجة، عندما تبدأ MyComponent بـrender فقط حينها يتم تحميل كود OtherComponent ، ريثما ينتهي التحميل ماذا تعرض للمستخدم؟ تعرض له ما تمرره للـfallback ، عند انتهاء تحميل كود OtherComponent يتم إخفاء fallback واستبداله بـOtherComponent نفسها. ملاحظة أخيرة: الـcode splitting مفيد للأداء فقط إن كنت متأكداً أن OtherComponent تستعمل فقط من قبل صفحات معينة أما إن كانت معظم الصفحات تستعملها فلا معنى من استخدام dynamic import.1 نقطة
-
لتنفيذ هذا الأمر عادةً ما نقوم بالتالي: الطريقة الأولى هي استخدام الوسم style و إعطائه attribute يسمى jsx بحيث نتمكن من كتابة أكواد javaScript داخل أكواد ال css، و يتم وضع هذا الوسم داخل ال component، لاحظ المثال التالي: import React from "react"; const Button = props => ( <button> {props.children} <style jsx>{` button { padding: ${"large" in props ? "60" : "20"}px; background: ${props.background}; color: black; display: inline-block; font-size: 1em; } `}</style> </button> ); export default function App() { return ( <div> <Button large background="orange"> click me </Button> </div> ); } أو يمكنك وضع التنسيقات الخاصة بوضع معين داخل صنف ما و تقوم بكتابة التنسيقات الخاصة به في ملف styleSheet خارجي و بعدها تقوم بالتبديل بين الأصناف حسب الحالة في الملف الخاص بالمكون، لاحظ المثال التالي: import React, { useEffect, useState } from 'react'; import './Nav.css'; function Nav() { const [show, handleShow] = useState(false); useEffect(() => { window.addEventListener( "scroll", ()=> { if (window.scrollY > 100) { handleShow(true); } else handleShow(false); }); return () => { window.removeEventListener("scroll"); } }, []); return ( <div className={` nav ${show && "nav__black"}`}> {/* نقوم بإضافة صنف حسب قيمة الحالة */} <img className="nav__logo" src="https://upload.wikimedia.org/wikipedia/commons/0/08/Netflix_2015_logo.svg" alt = "Netflix logo" /> <img className="nav__avatar" src="https://pbs.twimg.com/profile_images/1240119990411550720/hBEe3tdn_400x400.png" alt = "Netflix logo" /> </div> ) } export default Nav;1 نقطة
-
هذا يسمى بال decorator وتستطيع التعرف عليه مباشرة إذا كان متبوعاً بعلامة ال @ وهي عبارة عن إحاطة جزء من الكود بجزء آخر مثل ال HOCS وفي حالتك أنت تريد أن تحيط المكون الخاص بك App بال Store ولذلك كتبت هكذا @connect(mapStateToProps, mapDispatchToProps) // هذا يحيط ما يليه export default class App extends React.Component { // هذا لديه بيانات من ال store .... }1 نقطة
-
الرمز @ في جافاسكريبت يعتبر decorators و ال decorators في جافاسكريبت تتيح لنا عمل annotation و modification للأصناف و ال properties الخاصة بها أثناء وقت التصميم. كلا المثابين المرفقان في سؤالك صحيحين و متكافئين، أي أنّهما طريقتين مختلفتين للقيام بنفس الوظيفة، و اختيارإحداهما على الأخرى يعتبر تفضيل شخصي فقط ليس إلّا1 نقطة
-
يمكنك القيام بهذا عن طريق ما يسمى ب React.lazy فهي دالة تتيح لنا عمل render لل dynamically imported components مثل المكونات العادية، و هي تستخدم كما يلي: // React.lazy بدون import OtherComponent from './OtherComponent'; // React.lazy باستخدام const OtherComponent = React.lazy(() => import('./OtherComponent')); المكونات التي يتم استيرادها بهذه الطريقة يجب أن يتم عرضها داخل مكون suspense و هي يتيح لنا عرض مكون آخر أثناء تحميل ال lazy component ك spinner مثلًا import React, { Suspense } from 'react'; const OtherComponent = React.lazy(() => import('./OtherComponent')); function MyComponent() { return ( <div> <Suspense fallback={<div>Loading...</div>}> <OtherComponent /> </Suspense> </div> ); }1 نقطة
-
عندما نريد حفظ الحالة عند عمل refresh للمتصفح، فمن الأفضل أن تقوم بذلك باستخدام الطبقات الوسيطة ل redux. مثل الطبقات الوسيطة التي تسمى redux-persist و ال redux-storage. فكلًا منهما تقوم بنفس الوظيفة و هي حفظ ال redux state و تحميلها بعد عمل refresh. لذلك أنصحك بأن تلقي نظرة على الطبقة الوسيطة redux-persist فهي توفر أكثر من طريقة لل storage implementation و تدعم ال web و react-native و electron و node.1 نقطة
-
لديك عدة طرق يمكنك أ ن تحفظ الحالة كلها في ال local storage هكذا import { createStore } from 'redux'; import rootReducer from './rootReducer'; const store = createStore(rootReducer); localStorage.setItem('appState', JSON.stringify(store)) export default store; ثم عند استخدامها عند بدء ال application مثلاً باستدعائها واستخدامها const state = JSON.parse(localStorage.getItem('appState')) || {} أن تستخدم مكتبة جاهزة توفر عليك مثل مكتبة redux-persist1 نقطة
-
هذا طبيعي فهذا ما يسمى بال event ولأن ال li عنصر داخلي لل ul فلذلك عند الضغط عليه سيمرر حدث ليقوم الأب بتنفيذ ال onClick الخاصة به ولكن إذا لم تكن تريد هذا وتريد منع وصول ال event من الطفل إلى الأب فقط قم بما يلي لعناصر ال li <li onClick={(e) => { e.stopPropagation(); // هذا السطر سيمنع مرور الحدث من الطفل إلى الأب console.log('child1'); }} > list1 </li>1 نقطة
-
هذه طريقة جيدة بالفعل ولكن في حالة لم يكن لديك أكثر من تنسيق أو اثنين لكن لو زاد عن هذا تقوم بعمل دالة كالآتي: import React from 'react'; class App extends React.Component() { wrapperStyles = status => { const completed = status === 'completed'; return { color: completed ? 'green' : 'none', backgroundColor: completed ? 'red' : 'aqua', } }; render() { return ( <div style={this.wrapperStyles()}></div> ); } } export default App;1 نقطة
-
يجب عليك وضع كل ماهو خاص في ملف .env بجانب ال src وتكون لديك نسخة محلية منه وتتجاهل رفعها أثناء ال build ويكون لديك ملف مشابه مرفوع علي السيرفر بحيث تشير إليه عندما تريد استخدام المتغيرات الخاصة التي وضعتها project | |____ src |____ .env وبداخل ملف ال env تستخدم متغيرات خاصة تبدأ ب REACT_APP ثم الإسم الذي تريده هكذا REACT_APP_TOKEN="111111111111" REACT_APP_SECRET="Any thing" طبعاً عند استخدامها في الكود البرمجي الخاص بك تستخدم الآتي: process.env.REACT_APP_TOKEN process.env.REACT_APP_SECRET وهذا مرجع لك للتعمق أكثر1 نقطة
-
اذا أمكنك ارفاق صورة لما يخرج معك في cmd فربما يمكنني مساعدتك1 نقطة
-
يمكنك استخدام أحد الطرق التالية وتأكد من استخدام python3: # -*- coding: utf-8 -*- import sys def case1(text): print(text) def case2(text): print(text.encode("utf-8")) def case3(text): sys.stdout.buffer.write(text.encode("utf-8")) if __name__ == "__main__": text = "!مرحبا بكم في أكاديمية حسوب" for case in [case1, case2, case3]: try: print("Running {0}".format(case.__name__)) case(text) except Exception as e: print(e) print('-'*80) حاول أيضا تنفيذ التعليمة التالية في cmd قبل تنفيذ السكربت: chcp 65001 & cmd وجرب أيضا SET PYTHONIOENCODING=utf-8 لأن cmd لا يدعم unicode بالحالة العادية. لتنفيذ سكربت بتحديد python 3 اكتب: في cmd # python3 ... ______^1 نقطة
-
تصميم رائع جدًا, يجب أن تعرف أن لكل شخص ذوق معين لذلك حاول مرة أخرى لتكتسب مهارات و تصبح لك بعض أفكار لمختلف الزبائن1 نقطة
-
1 نقطة