Как создать динамические сборщики внутри цикла в реагировать на родной? - PullRequest
0 голосов
/ 10 мая 2019

Это мои шаги:

Код Json:

"features": [
            {
                "name": "size",
                "selected": null,
                "values": [
                    {
                        "value": "40",
                        "label": "40",
                    },
                    {
                        "value": "41",
                        "label": "41",
                    }
                ]
            },
            {
                "label": "color",
                "selected": "gray",
                "values": [
                    {
                        "value": "gray",
                        "label": "gray"
                    },
                    {
                        "value": "black",
                        "label": "black",
                    }
                ]
            }
        ]

Step2: определить состояние

constructor(props) {
    super(props);
    this.state ={selectedDropDownValue:[]};
}

step3:

main render:

render{
    return(
        {this.printPickers()}
    );
}

и

printPickers(){

    const listItems = data.map((obj,index) =>

        <Item picker key={'mykey1' + index}>
            <Picker
                selectedValue={(this.state.selectedDropDownValue[obj.label]) ?this.state.selectedDropDownValue[obj.label] : obj.selected}
                onValueChange={(itemValue, itemIndex, itemName) =>this.pickerChange(itemIndex,itemValue,obj.name)}
                >
                {
                    obj1.values.map( (v)=>{
                        return <Picker.Item key={'mykey2' + index} label={v.label} value={v.value} />
                    })
                }
            </Picker>
        </Item>

    );
    return (<View>{listItems}</View>);
  }

и наконец:

pickerChange(itemIndex,itemValue,itemName){

      this.setState({
          selectedDropDownValue: Object.assign(this.state.selectedDropDownValue, {[itemName]: itemValue})
      });

  }

Моя проблема Не могу изменить параметры каждого сборщика, касаясь их, но с помощью console.log(this.state.selectedDropDownValue), Я получаю правильные данные.

Моя проблема: я не могу изменить параметры каждого сборщика, касаясь их, но с console.log(this.state.selectedDropDownValue) я получаю правильные данные.

1 Ответ

0 голосов
/ 13 мая 2019

Существует некоторое несоответствие в данных JSON.Либо оба должны иметь ключ label или name .

Итак, предположим, что оба элемента имеют ключ как label , тогда вам нужно обновить вызов функции pickerChange следующим образом:

this.pickerChange(itemIndex,itemValue,obj.label)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...