0

有两个选择字段,LanguageCurrency。我正在两个字段中动态显示值,但现在我必须更改下拉值并按下按钮我正在调用 Onclick 功能并更新到 server 。

  1. 如果不更改首选语言中的 cvalue 并更新其显示未定义
  2. preferredCurrency - 如果我为此使用下面的代码,则给出布尔值。

请检查我的代码并更正它。

我必须在两个选择字段中动态显示数据,并且在更改选择字段中的值并更新它应该更新当前选定值之后。

     this.state = {  languageAndCurrecny:{
            preferredLanguage: navigation.state.params.customerInfo[0].billingPreferenceDetails.presentationLanguageCode,
          },
            currencyChangedValue:{
        preferredCurrency: navigation.state.params.customerInfo[0].billingPreferenceDetails.preferedCurrencyCode,
      }

      this.handleChangeCurrency=this.handleChangeCurrency.bind(this);
}

OnButtonClick = async (preferredLanguage, preferredCurrency) => {
    const { OnButtonClick } = this.props;
    await OnButtonClick(preferredLanguage, preferredCurrency);

    this.setState({
          preferredCurrency:'',
          preferredLanguage:'',
    })
}

languageChanged = (key, val) => {
    this.handleChange({ field: "preferredLanguage" }, val);
};

handleChange = (props, e) => {
    let tempObj = this.state.languageAndCurrecny;
    tempObj[props.field] = e;
    this.setState({ preferredLanguage: tempObj });
  };

  currencyChanged = (key, val) => {
    this.handleChangeCurrency({ field: "preferredCurrency" }, val);
  };

  handleChangeCurrency = (props, e) => {
    let tempObj = this.state.currencyChangedValue;
    tempObj[props.field] = e;
    this.setState({ preferredCurrency: tempObj });
  };
      render (
      let {languageAndCurrecny,currencyChangedValue} = this.state;
      const { navigation, clmmasterData } = this.props;
      const { masterData, language } = clmmasterData;
      let currencyData=[];
        masterData.preferredCurrency.map(({ code: value, name: label }) => {
          currencyData.push({ value, label });
        });

        let languageData=[];
        masterData.language.map(({ code: value, name: label }) => {
          languageData.push({ value, label });
        });
        return (

    <View style={{ padding: 20 }}>
                    <Form style={{ width: '100%' }}>
                      <SelectField
                        label="Presentation Language"
                        node="presentationLanguage"
                        options={languageData}
                        value={languageAndCurrency.preferredLanguage}
                        onChange={this.languageChanged}
                        that={this}
                        setIcon={true}
                        img="LANGUAGE"
                      />

                      <SelectField
                        label="Preferred Currency"
                        options={currencyData}
                        value={preferredCurrency}
                        node="preferredCurrency"
                        onChange={this.handleChangeCurrency}
                        that={this}
                        setIcon={true}
                        img="CURRENCY"
                      />

                      <View style={{ marginTop: 50 }}>
                        <PrimaryBtn label={'submit'} disabled={false} onPress={()=> this.OnButtonClick(this.state.preferredLanguage,this.state.preferredCurrency,)}/>
                      </View>

谢谢..请帮忙

4

1 回答 1

0

新答案:

onChange返回一个包含新选定值的值。

使用这两个功能如下

 languageChanged = (key, val) => {
    let languageAndCurrecny.preferredLanguage = val
    this.setState({ languageAndCurrecny: languageAndCurrecny})
};

处理更改货币(值){

this.setState({
    preferredCurrency: value
})}

旧答案只是在渲染方法中添加这个,你只是错过了preferredCurrency

let { languageAndCurrecny, preferredCurrency } = this.state;
于 2019-07-29T13:05:17.700 回答