الفرق بين المراجعتين ل"ReactNative/handling text input"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE:التعامل مع المدخلات النصية في React Native}}</noinclude>
 
<noinclude>{{DISPLAYTITLE:التعامل مع المدخلات النصية في React Native}}</noinclude>
 +
 
==التعامل مع المدخلات النّصيّة (Text Input)==
 
==التعامل مع المدخلات النّصيّة (Text Input)==
<code>[[ReactNative/textinput|TextInput]]</code> مكونٌ أساسيّ يسمح للمستخدم بإدخال النّصوص، يمتلك خاصيّةً <code>onChangeText</code> تقبل دالّة تُستدعَى في كل مرة يُغيَّر فيها النص، والخاصيّة <code>onSubmitEditing</code> التي تأخذ دالة تُستدعى عند إرسال النص.
+
<code>[[ReactNative/textinput|TextInput]]</code> مكونٌ أساسيّ يسمح للمستخدم بإدخال النّصوص، ويمتلك خاصيّة <code>onChangeText</code> تقبل دالّةً تُستدعَى في كل مرة يُغيَّر فيها النص، والخاصيّة <code>onSubmitEditing</code> التي تأخذ دالةً تُستدعى عند إرسال النص.
  
على سبيل المثال، لنفترض أنّ تطبيقك يُترجم كلمات المستخدم التي يكتبها إلى لغة مختلفة. في هذه اللغة الجديدة، تُكتَب كل كلمة واحدة بنفس الطريقة: <code>@</code>. لذا، ستُترجَم الجملة <code>"Hello there Bob"</code> إلى <code>"@@@"</code>.
+
لنفترض مثلًا أنّ تطبيقك يُترجم كلمات المستخدم التي يكتبها إلى لغةٍ مختلفة، ستكتب كل كلمةٍ واحدةٍ في هذه اللغة الجديدة بنفس الطريقة وهي 🍕، لذا ستُترجَم الجملة <code>"Hello there Bob"</code> إلى "🍕🍕🍕".
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
import React, { Component } from 'react';
 
import React, { Component } from 'react';
 
import { AppRegistry, Text, TextInput, View } from 'react-native';
 
import { AppRegistry, Text, TextInput, View } from 'react-native';
  
export default class PizzaTranslator extends Component {
+
import React, { useState } from 'react';
  constructor(props) {
+
import { Text, TextInput, View } from 'react-native';
    super(props);
 
    this.state = {text: ''};
 
  }
 
  
   render() {
+
const PizzaTranslator = () => {
    return (
+
   const [text, setText] = useState('');
      <View style={{padding: 10}}>
+
  return (
        <TextInput
+
    <View style={{padding: 10}}>
          style={{height: 40}}
+
      <TextInput
          placeholder="اكتُب هنا لتُترجِم"
+
        style={{height: 40}}
          onChangeText={(text) => this.setState({text})}
+
        placeholder="!اكتب هنا لتترجم"
         />
+
        onChangeText={text => setText(text)}
        <Text style={{padding: 10, fontSize: 42}}>
+
         defaultValue={text}
          {this.state.text.split(' ').map((word) => word && '@').join(' ')}
+
      />
        </Text>
+
      <Text style={{padding: 10, fontSize: 42}}>
      </View>
+
        {text.split(' ').map((word) => word && '🍕').join(' ')}
    );
+
      </Text>
  }
+
    </View>
 +
  );
 
}
 
}
  
// تخطّ هذا السطر إن كنت تستعمل أداة
+
export default PizzaTranslator;
// Create React Native App
 
AppRegistry.registerComponent('AwesomeProject', () => PizzaTranslator);
 
 
</syntaxhighlight>
 
</syntaxhighlight>
في هذا المثال، نخزّن النص (‎<code>text</code>‎) في الحالة لأنه يتغير بمرور الوقت.
+
نخزّن النص (‎<code>text</code>‎) في هذا المثال في الحالة لأنه يتغير بمرور الوقت.
  
هناك الكثير من الأشياء التي قد ترغب بإنجازها بحقل إدخال النص. على سبيل المثال، يمكنك التحقق من صحة النص المُدخَل في نفس الوقت الذي يكتب فيه المستخدم. لمزيد من الأمثلة التفصيلية، راجع [[React/forms#.D8.A7.D9.84.D9.85.D9.83.D9.88.D9.86.D8.A7.D8.AA .D8.A7.D9.84.D9.85.D8.B6.D8.A8.D9.88.D8.B7.D8.A9|توثيق React حول المكونات المضبوطة]]، أو توثيق المكوّن [[ReactNative/textinput|‎<code>TextInput</code>‎]].
+
هناك الكثير من الأشياء التي قد ترغب بإنجازها بحقل إدخال النص، كالتحقق من صحة النص المُدخَل في الوقت نفسه الذي يكتب فيه المستخدم، لمزيد من الأمثلة التفصيلية، راجع [[React/forms#.D8.A7.D9.84.D9.85.D9.83.D9.88.D9.86.D8.A7.D8.AA .D8.A7.D9.84.D9.85.D8.B6.D8.A8.D9.88.D8.B7.D8.A9|توثيق React حول المكونات المضبوطة]]، أو توثيق المكوّن [[ReactNative/textinput|‎<code>TextInput</code>‎]].
  
حقل إدخال النص هو أحد الطرائق التي يتفاعل بها المستخدم مع التطبيق. لنستكشف طريقة أخرى ولنتعلّم [[ReactNative/handling touches|كيفية التعامل مع اللمسات]].
+
حقل إدخال النص هو أحد الطرائق التي يتفاعل بها المستخدم مع التطبيق، لنستكشف طريقة أخرى ولنتعلّم [[ReactNative/handling touches|كيفية التعامل مع اللمسات]].
  
 
== مصادر ==
 
== مصادر ==
 
* [https://facebook.github.io/react-native/docs/handling-text-input صفحة Handling Text Input في توثيق React Native الرسمي.]
 
* [https://facebook.github.io/react-native/docs/handling-text-input صفحة Handling Text Input في توثيق React Native الرسمي.]
 
[[تصنيف:ReactNative]]
 
[[تصنيف:ReactNative]]

مراجعة 21:40، 9 مارس 2021


التعامل مع المدخلات النّصيّة (Text Input)

TextInput مكونٌ أساسيّ يسمح للمستخدم بإدخال النّصوص، ويمتلك خاصيّة onChangeText تقبل دالّةً تُستدعَى في كل مرة يُغيَّر فيها النص، والخاصيّة onSubmitEditing التي تأخذ دالةً تُستدعى عند إرسال النص.

لنفترض مثلًا أنّ تطبيقك يُترجم كلمات المستخدم التي يكتبها إلى لغةٍ مختلفة، ستكتب كل كلمةٍ واحدةٍ في هذه اللغة الجديدة بنفس الطريقة وهي 🍕، لذا ستُترجَم الجملة "Hello there Bob" إلى "🍕🍕🍕".

import React, { Component } from 'react';
import { AppRegistry, Text, TextInput, View } from 'react-native';

import React, { useState } from 'react';
import { Text, TextInput, View } from 'react-native';

const PizzaTranslator = () => {
  const [text, setText] = useState('');
  return (
    <View style={{padding: 10}}>
      <TextInput
        style={{height: 40}}
        placeholder="!اكتب هنا لتترجم"
        onChangeText={text => setText(text)}
        defaultValue={text}
      />
      <Text style={{padding: 10, fontSize: 42}}>
        {text.split(' ').map((word) => word && '🍕').join(' ')}
      </Text>
    </View>
  );
}

export default PizzaTranslator;

نخزّن النص (‎text‎) في هذا المثال في الحالة لأنه يتغير بمرور الوقت.

هناك الكثير من الأشياء التي قد ترغب بإنجازها بحقل إدخال النص، كالتحقق من صحة النص المُدخَل في الوقت نفسه الذي يكتب فيه المستخدم، لمزيد من الأمثلة التفصيلية، راجع توثيق React حول المكونات المضبوطة، أو توثيق المكوّن TextInput.

حقل إدخال النص هو أحد الطرائق التي يتفاعل بها المستخدم مع التطبيق، لنستكشف طريقة أخرى ولنتعلّم كيفية التعامل مع اللمسات.

مصادر