मुझे पता है कि मैं इसे this.state का उपयोग करके कर सकता हूं लेकिन मैं अपना कोड एक समान बनाना चाहता हूं। मेरे पास एक एपीआई के माध्यम से जुड़े वेब ऐप और मोबाइल ऐप दोनों हैं।

यह मेरा रिएक्टजेएस वेब ऐप जैसा दिखता है (यह एक काम करता है):

import React from 'react'

export default class SignIn extends React.Component {
  signIn = () => {
    var username = this.refs.username.value;
    var password = this.refs.password.value;

    console.log(username); //works
    console.log(password); //works
  }
  render () {
    return (
      <div>
        <input ref='username' placeholder='Username' />
        <input ref='password' type='password' placeholder='Password' />
        <button onClick={this.signIn.bind(this)}>Submit</button>
      </div>
    );
  }
}

उपरोक्त कोड टेक्स्टबॉक्स के मान प्राप्त करने के लिए किसी भी राज्य का उपयोग नहीं करता है और मैं प्रतिक्रिया मूल निवासी में एक ही चीज़ प्राप्त करना चाहता हूं।

मेरे मोबाइल ऐप में मेरे पास निम्न कोड है (यह काम नहीं करता):

import React from 'react';
import {Alert, TextInput, View, Button} from 'react-native';

export default class App extends React.Component {
  signIn = () => {
    var username = this.refs.username.value;
    var password = this.refs.password.value;

    Alert.alert(username); //doesn't work
    Alert.alert(password); //doesn't work
  }
  render() {
    return (
      <View style={{marginTop: 60}}>
        <TextInput ref='username' placeholder='Username' autoCapitalize='none' />
        <TextInput ref='password' placeholder='Password' autoCapitalize='none' secureTextEntry={true} />
        <Button title='Submit' onPress={this.signIn.bind(this)} />
      </View>
    );
  }
}

मैं चाहता हूं कि कोड यथासंभव समान हो लेकिन वही तर्क प्रतिक्रिया मूल में काम नहीं करता है। क्या राज्य का उपयोग किए बिना ऐसा करना संभव है?

1
dcangulo 24 अक्टूबर 2018, 09:38

1 उत्तर

सबसे बढ़िया उत्तर

username फ़ील्ड का आंतरिक टेक्स्ट मान प्राप्त करने के लिए this.refs.username._lastNativeText का उपयोग करें।

हालांकि, आगे जाकर, आधिकारिक आरएन गाइड के अनुसार इसे करने का यह सबसे अच्छा तरीका नहीं है। देखें यह SO उत्तर

1
Uzair A. 24 अक्टूबर 2018, 07:03