मेरे पास यह पिकर है:

<Picker
    style={{ width: "100%" }}
    mode="dropdown"
    selectedValue={move.client}
    onValueChange={this.handleChange("client")}
>
    {this.state.clients !== "" ? (
    this.state.clients.map(client => {
        <Picker.Item label={client.name} value={client.id} />;
    })
    ) : (
        <Picker.Item label="Loading..." value="0" />
    )}
</Picker>

मैं पिकर.आइटम्स को वह सरणी नहीं बना सकता जो मैं चाहता हूं। यह ठीक उसी तरह काम करता है जैसे रिएक्ट जेएस में, लेकिन मैं इसे यहां काम नहीं कर सकता।

और इस प्रकार मैं अपने डीबी से क्लाइंट सरणी प्राप्त करता हूं:

componentDidMount() {
        axios
            .get(`${API_URL}/clients`)
            .then(response => {
                this.setState({ clients: response.data });
            })
            .catch(error => console.log(error));
    }

मुझे यह त्रुटि मिलती है

लेखन त्रुटि: नल की संपत्ति 'प्रॉप्स' नहीं पढ़ सकता

ऐसा लगता है कि यह पिकर को प्रस्तुत करता है, लेकिन जब मुझे अपने डीबी से डेटा मिलता है तो यह दुर्घटनाग्रस्त हो जाता है और मुझे यह त्रुटि मिलती है। मैं अभी नहीं ढूंढ सकता कि मैं क्या गलत कर रहा हूं ...

0
user11011546 24 जून 2019, 14:50

1 उत्तर

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

याद रखें कि आपको एक फंक्शन को array.map पर पास करना है और एक फंक्शन में <Picker.Item label={client.name} value={client.id} />; जैसा स्टेटमेंट नहीं हो सकता। आपको पहले एक वापसी विवरण जोड़ना चाहिए। नीचे सही है:

<Picker
    style={{ width: "100%" }}
    mode="dropdown"
    selectedValue={move.client}
    onValueChange={this.handleChange("client")}
>
    {this.state.clients !== "" ? (
        this.state.clients.map(client => {
            return <Picker.Item label={client.name} value={client.id} />;
        })
    ) : (
        <Picker.Item label="Loading..." value="0" />
    )}
</Picker>

और साथ ही, इसमें एक भ्रम प्रतीत होता है this.state.clients !== "" (आपकी टिप्पणियों को ऊपर देखा और इसका उत्तर देने के बारे में सोचा)। आप इसकी तुलना इस बात से कर सकते हैं कि आपने अपनी कक्षा के अंदर constructor(props) फ़ंक्शन के अंदर this.state को कैसे प्रारंभ किया है।

उदाहरण के लिए:

यदि आपका कोड इस तरह है:

constructor(props){
    super(props);
    this.state={clients:{}};
}

तो आपको चाहिए:

{this.state.clients !== {} ? (<Picker.Item />):(<Picker.Item label='loading' />)}

या यदि आपका कोड इस तरह है:

constructor(props){
    super(props);
    this.state={clients:''};
}

तो आपको चाहिए:

{this.state.clients !== '' ? (<Picker.Item />):(<Picker.Item label='loading' />)}
1
Nandu Kkd 24 जून 2019, 16:05