Как изменить значение выбора с помощью выбора, когда элементы выбора отображаются? - PullRequest
0 голосов
/ 18 апреля 2020

У меня не получается изменить значение выбранного средства выбора. Когда я нажимаю на другое значение, оно меняется правильно и после 0.2 se c снова ставит первое значение. Не знаю почему ...

Не могли бы вы мне помочь, пожалуйста?

 const [espaceSelected, setEspaceSelected] = useState(null);

    useEffect(() => {
        getEspaces().then(data => {
            setEspaces(data);
            AsyncStorage.setItem('id_espace',espaces[0].id_espace);
            setEspaceSelected(espaces[2].name);
        })
    }, []);

...
return ( ...
  <Picker selectedValue={espaceSelected ? espaceSelected : null} onValueChange={(value) => { setEspaceSelected(value.name);}}>
                {espaces ? espaces.map(e => {
                    return (
                        <Picker.Item color="#7B65AE" label={e.name} value={e.id_espace} />);
                }) : null}
            </Picker>
);

Заранее спасибо

1 Ответ

1 голос
/ 18 апреля 2020

В коде рендеринга для Picker вы устанавливаете значение value={e.id_espace} и затем пытаетесь получить доступ к value.name в onValueChange, но value - это только id, а не объект имея id и name.

Например, вы можете исправить это, используя name везде и не смешивая его с идентификатором или объектом:

...onValueChange={(name) => { setEspaceSelected(name); }} ...
...
<Picker.Item color="#7B65AE" label={e.name} value={e.name} />
...