مثال بسيط جدًا لنموذج يقبل اسم مستخدم GitHub وبمجرد أن يتلقى ملفsubmit
الحدث ، يطلب من واجهة برمجة تطبيقات GitHub معلومات المستخدم ، ويطبعها.
مثال بسيط جدًا لنموذج يقبل اسم مستخدم GitHub وبمجرد أن يتلقى ملفsubmit
الحدث ، يطلب من واجهة برمجة تطبيقات GitHub معلومات المستخدم ، ويطبعها.
هذا الرمز يخلق قابلة لإعادة الاستخدامبطاقةعنصر. عند إدخال اسم في ملفinput
المجال الذي يديرهاستمارةالمكون ، هذا الاسمملزمة حالتها.
متيإضافة بطاقةالضغط ، يتم مسح نموذج الإدخال عن طريق مسحuserName
حالةاستمارةعنصر.
يستخدم المثال ، بالإضافة إلى React ، مكتبة Axios. إنها مكتبة مفيدة وخفيفة الوزن للتعامل مع طلبات الشبكة. قم بإضافته إلى إعدادات Pen في Codepen ، أو قم بتثبيته محليًا باستخدامnpm install axios
.
انتاج |
رمز
نبدأ بإنشاء ملفCard
المكون الذي سيعرض صورتنا وتفاصيلنا كما تم جمعها من GitHub. يحصل على بياناته عبر الدعائم ، باستخدام
props.avatar_url
الصورة الرمزية للمستخدمprops.name
اسم المستخدمprops.blog
عنوان URL لموقع المستخدمconst Card = props => { return ( <div style={{ margin: '1em' }}> <img alt="avatar" style={{ width: '70px' }} src={props.avatar_url} /> <div> <div style={{ fontWeight: 'bold' }}>{props.name}</div> <div>{props.blog}</div> </div> </div> ) }
نقوم بإنشاء قائمة بهذه المكونات ، والتي سيتم تمريرها بواسطة مكون رئيسي في ملفcards
دعم لCardList
، والذي يتكرر عليه باستخدامmap()
ويخرج قائمة البطاقات:
const CardList = props => (
<div>
{props.cards.map(card => (
<Card {...card} />
))}
</div>
)
المكون الرئيسي هو التطبيق الذي يخزن ملفcards
مجموعة في حالتها الخاصة ، تدار باستخدامuseState()
صنارة صيد:
const App = () => {
const [cards, setCards] = useState([])
return (
<div>
<CardList cards={cards} />
</div>
)
}
رائع! يجب أن يكون لدينا طريقة الآن لنطلب من GitHub الحصول على تفاصيل اسم مستخدم واحد. سنفعل ذلك باستخدام ملفForm
المكون ، حيث ندير دولتنا (username
) ، ونطلب من GitHub الحصول على معلومات حول مستخدم يستخدم واجهات برمجة التطبيقات العامة الخاصة به ، عبرأكسيوس:
const Form = props => {
const [username, setUsername] = useState('')
handleSubmit = event => {
event.preventDefault()
<span style="color:#a6e22e">axios</span>.<span style="color:#a6e22e">get</span>(<span style="color:#e6db74">`https://api.github.com/users/</span><span style="color:#e6db74">${</span><span style="color:#a6e22e">username</span><span style="color:#e6db74">}</span><span style="color:#e6db74">`</span>).<span style="color:#a6e22e">then</span>(<span style="color:#a6e22e">resp</span> => {
<span style="color:#a6e22e">props</span>.<span style="color:#a6e22e">onSubmit</span>(<span style="color:#a6e22e">resp</span>.<span style="color:#a6e22e">data</span>)
<span style="color:#a6e22e">setUsername</span>(<span style="color:#e6db74">''</span>)
})
}
return (
<form onSubmit={handleSubmit}>
<input
type=“text”
value={username}
onChange={event => setUsername(event.target.value)}
placeholder=“GitHub username”
required
/>
<button type=“submit”>Add card</button>
</form>
)
}
عندما يتم تقديم النموذج نسميhandleSubmit
الحدث ، وبعد الاتصال بالشبكة ندعوهاprops.onSubmit
تمرير الوالد (App
) البيانات التي حصلنا عليها من جيثب.
نضيفه إلىApp
، تمرير طريقة لإضافة بطاقة جديدة إلى قائمة البطاقات ،addNewCard
، مثلonSubmit
دعم:
const App = () => {
const [cards, setCards] = useState([])
addNewCard = cardInfo => {
setCards(cards.concat(cardInfo))
}
return (
<div>
<Form onSubmit={addNewCard} />
<CardList cards={cards} />
</div>
)
}
أخيرًا نقوم بعرض التطبيق:
ReactDOM.render(<App />, document.getElementById('app'))
إليك الكود المصدري الكامل لتطبيقنا الصغير React:
const { useState } = React
const Card = props => {
return (
<div style={{ margin: ‘1em’ }}>
<img alt=“avatar” style={{ width: ‘70px’ }} src={props.avatar_url} />
<div>
<div style={{ fontWeight: ‘bold’ }}>{props.name}</div>
<div>{props.blog}</div>
</div>
</div>
)
}
const CardList = props => <div>{props.cards.map(card => <Card {…card} />)}</div>
const Form = props => {
const [username, setUsername] = useState(’’)
handleSubmit = event => {
event.preventDefault()
<span style="color:#a6e22e">axios</span>
.<span style="color:#a6e22e">get</span>(<span style="color:#e6db74">`https://api.github.com/users/</span><span style="color:#e6db74">${</span><span style="color:#a6e22e">username</span><span style="color:#e6db74">}</span><span style="color:#e6db74">`</span>)
.<span style="color:#a6e22e">then</span>(<span style="color:#a6e22e">resp</span> => {
<span style="color:#a6e22e">props</span>.<span style="color:#a6e22e">onSubmit</span>(<span style="color:#a6e22e">resp</span>.<span style="color:#a6e22e">data</span>)
<span style="color:#a6e22e">setUsername</span>(<span style="color:#e6db74">''</span>)
})
}
return (
<form onSubmit={handleSubmit}>
<input
type=“text”
value={username}
onChange={event => setUsername(event.target.value)}
placeholder=“GitHub username”
required
/>
<button type=“submit”>Add card</button>
</form>
)
}
const App = () => {
const [cards, setCards] = useState([])
addNewCard = cardInfo => {
setCards(cards.concat(cardInfo))
}
return (
<div>
<Form onSubmit={addNewCard} />
<CardList cards={cards} />
</div>
)
}
ReactDOM.render(<App />, document.getElementById(‘app’))
تحقق من ذلك على Codepen فيhttps://codepen.io/flaviocopes/pen/oJLyeY
تحميل مجانيكتيب رد الفعل
المزيد من البرامج التعليمية للتفاعل:
- مثال على تطبيق بسيط من React: جلب معلومات مستخدمي GitHub عبر واجهة برمجة التطبيقات
- أنشئ عدادًا بسيطًا باستخدام React
- إعداد VS Code لتطوير React
- كيفية تمرير الدعائم إلى مكون فرعي عبر React Router
- أنشئ تطبيقًا باستخدام Electron و React
- البرنامج التعليمي: أنشئ جدول بيانات باستخدام React
- خارطة الطريق لتعلم React
- تعرف على كيفية استخدام Redux
- الشروع في العمل مع JSX
- المكونات المصممة
- مقدمة إلى Redux Saga
- مقدمة إلى React Router
- مقدمة إلى React
- مكونات رد الفعل
- DOM الظاهري
- رد فعل الأحداث
- دولة رد الفعل
- رد فعل الدعائم
- جزء رد الفعل
- واجهة برمجة تطبيقات سياق React
- تفاعل PropTypes
- مفاهيم التفاعل: تصريحية
- React: كيفية إظهار مكون مختلف عند النقر
- كيفية التكرار داخل React JSX
- الدعائم مقابل الحالة في React
- هل يجب عليك استخدام jQuery أم React؟
- ما مقدار JavaScript الذي تحتاج إلى معرفته لاستخدام React؟
- مقدمة لغاتسبي
- كيفية الإشارة إلى عنصر DOM في React
- تدفق البيانات أحادي الاتجاه في React
- تفاعل مكونات الترتيب الأعلى
- تفاعل أحداث دورة الحياة
- مفهوم التفاعل: الثبات
- مفهوم التفاعل: النقاء
- مقدمة في React Hooks
- مقدمة حول إنشاء التطبيق التفاعلي
- مفهوم التفاعل: التركيب
- رد الفعل: العرض مقابل مكونات الحاوية
- تقسيم الكود في React
- عرض جانب الخادم باستخدام React
- كيفية تثبيت React
- CSS في React
- استخدام SASS في React
- التعامل مع النماذج في React
- رد فعل StrictMode
- تفاعل البوابات
- رد فعل الدعائم التقديم
- اختبار مكونات React
- كيفية تمرير معامل إلى معالجات الأحداث في React
- كيفية معالجة الأخطاء في React
- كيفية إرجاع عناصر متعددة في JSX
- التصيير الشرطي في React
- React ، كيفية نقل الدعائم إلى المكونات الفرعية
- كيفية الحصول على قيمة عنصر الإدخال في React
- كيفية استخدام خطاف useState React
- كيفية استخدام الخطاف useCallback React
- كيفية استخدام الخطاف useEffect React
- كيفية استخدام الخطاف useMemo React
- كيفية استخدام خطاف useRef React
- كيفية استخدام الخطاف useContext React
- كيفية استخدام خطاف useReducer React
- كيفية توصيل تطبيق React بخلفية على نفس الأصل
- البرنامج التعليمي Reach Router
- كيفية استخدام أدوات مطور React
- كيف تتعلم React
- كيفية تصحيح أخطاء تطبيق React
- كيفية عرض HTML في React
- كيفية إصلاح الخطأ "seriouslySetInnerHTML" لا يتطابق مع الخطأ في React
- كيف أصلحت مشكلة في حالة نموذج تسجيل الدخول إلى React والملء التلقائي للمتصفح
- كيفية تكوين HTTPS في تطبيق React على المضيف المحلي
- كيفية إصلاح الخطأ "لا يمكن تحديث مكون أثناء عرض مكون مختلف" في React
- هل يمكنني استخدام خطافات React داخل شرطي؟
- استخدام useState مع كائن: كيفية التحديث
- كيفية تحريك الكتل البرمجية باستخدام React و Tailwind
- React ، ركز عنصرًا في React عند إضافته إلى DOM
- رد فعل وتحرير النص عند النقر المزدوج