映射选择器项时,如何使用 Picker 更改选择器值?
How to make change on picker value with Picker when the picker items are mapped?
我没有成功更改选择器的选定值。
当我点击其他值时,它会正确更改,并在 0.2 秒后再次输入第一个值。
不知道为什么...
你能帮帮我吗?
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>
);
提前致谢
在 Picker
的渲染代码中,您将值设置为 value={e.id_espace}
,然后尝试访问 onValueChange
中的 value.name
,但是 value
只是 id
而不是具有 id
和 name
.
的对象
例如,您可以通过在任何地方使用 name
而不是将其与 id 或对象混合来修复它:
...onValueChange={(name) => { setEspaceSelected(name); }} ...
...
<Picker.Item color="#7B65AE" label={e.name} value={e.name} />
我没有成功更改选择器的选定值。 当我点击其他值时,它会正确更改,并在 0.2 秒后再次输入第一个值。 不知道为什么...
你能帮帮我吗?
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>
);
提前致谢
在 Picker
的渲染代码中,您将值设置为 value={e.id_espace}
,然后尝试访问 onValueChange
中的 value.name
,但是 value
只是 id
而不是具有 id
和 name
.
例如,您可以通过在任何地方使用 name
而不是将其与 id 或对象混合来修复它:
...onValueChange={(name) => { setEspaceSelected(name); }} ...
...
<Picker.Item color="#7B65AE" label={e.name} value={e.name} />