2016-06-02 6 views
11

मेरे पास एक पिकर है जिसे मैं अभी दो विकल्प के साथ आईओएस पर परीक्षण कर रहा हूं। हर बार जब मैं पहले विकल्प से दूसरे विकल्प में खींचता हूं, तो पिकर तुरंत पहले विकल्प पर वापस आ जाता है।नए चुने हुए विकल्प पर प्रतिक्रिया-देशी पिकर कैसे बने रहें?

यह मेरे पिकर के लिए मेरा कोड जैसा दिखता है।

<Picker 
     style={{ 
     width: 100, 
     }} 
     selectedValue={(this.state && this.state.pickerValue) || 'a'} 
     onValueChange={(value) => { 
     this.setState({value}); 
     }} itemStyle={{color: 'white'}}> 
     <Picker.Item label={'Hello'} value={'a'} /> 
     <Picker.Item label={'World'} value={'b'} /> 
</Picker> 

मैं चाहता हूं कि चयनकर्ता नए स्क्रॉल-टू विकल्प पर रहें। मैंने selectedValue विशेषता के || 'a' भाग को भी हटा दिया है, लेकिन इसने समस्या को हल नहीं किया है।

+1

इस पर बदलें। वैल्यू चेंज इस.सेटस्टेट ({pickerValue: value}); – Nakib

उत्तर

14

मूल्य परिवर्तन पर आप जो राज्य की संपत्ति बदल निर्दिष्ट और this.setState यह उसके अनुसार बदल साथ की जरूरत है

onValueChange={(value) => {this.setState({pickerValue: value}); 

पूरा कोड

<Picker 
     style={{ 
     width: 100, 
     }} 
     selectedValue={(this.state && this.state.pickerValue) || 'a'} 
     onValueChange={(value) => { 
     this.setState({pickerValue: value}); 
     }} itemStyle={{color: 'white'}}> 
     <Picker.Item label={'Hello'} value={'a'} /> 
     <Picker.Item label={'World'} value={'b'} /> 
</Picker> 
-1

मैं इस "हैक" का इस्तेमाल किया:

render() { 
    const values = ['1', '2']; 

    return (
     <Picker 
     value={this.state.value} 
     onValueChange={this.onValueChange.bind(this)} 
     > 
     { 
       <Picker 
        value={this.state.value} 
        onValueChange={this.onValueChange.bind(this)} 
       > 
       { 
        [<Picker.Item 
         label="n/a" 
         value={null} 
        />].concat(values.map(value => { 
          return (
           <Picker.Item 
            label={value} 
            value={value} 
           /> 
          ) 
          }) 
        ) 
       } 
       </Picker> 
    ); 
    } 
+1

जबकि उत्तरों की हमेशा सराहना की जाती है, इस प्रश्न को ** ** ** पहले पूछा गया था, और पहले से ही एक स्वीकार्य समाधान था। कृपया उत्तर देने के लिए शीर्ष पर 'बंपिंग' प्रश्नों से बचने का प्रयास करें, जब तक कि प्रश्न को हल नहीं किया गया हो, या आपको समस्या के लिए एक नया और बेहतर समाधान मिला। यह भी समझाने में मदद के लिए कुछ [** अपने कोड के आसपास संदर्भ ** **] (https://meta.stackexchange.com/questions/114762) प्रदान करना भी याद रखें। अपने उत्तरों को गिनने के तरीकों के बारे में कुछ सुझावों के लिए [** महान उत्तरों ** लिखना) [http://stackoverflow.com/help/how-to-answer) पर प्रलेखन देखें :) –

+1

क्या यह अनुशंसित इंडेंटिंग है? मैं सिर्फ प्रतिक्रिया करने के लिए नया हूं। – ratsimihah

संबंधित मुद्दे