ReactJS 设置值使用状态组件 return undefined
ReactJS set value using state component return undefined
我有这段代码,其中我基于存储的对象构建了一堆 select 和选项;
我还想设置“selected”值 onChange,我将 selected 值存储在一个状态中,所以每次我重建 select(基于 select在实际情况下我添加或删除选项)使用 select 状态我重新 select 以前的值;但它似乎不起作用,如果我在不应用的状态上设置一些默认值
我这里有代码:
https://codesandbox.io/s/damp-cherry-wsqyx?file=/src/App.js
我设置了一个默认值
const [selected, setSelected] = useState([{ Weigth: "250gr" }]);
但是(即使使用 useEffect 我也可以看到 selected 有一个值)该值未在 select
中设置
该值计算如下:
value={selected.find((o) => o.name === attribute.name)}
查找的结果是“未定义”,即使我很确定 o.name 是 Weigth 并且 attribute.name 也是 Weight
我错过了什么?有帮助吗?
您的对象实际上没有 name
键,您必须将对象更改为:
const [selected, setSelected] = useState([
{ name: 'Weight', value: "250gr" }
]);
然后从找到的对象中获取值:
value={selected.find(o => o.name === attribute.name)?.value}
您还可以考虑使用对象而不是数组来存储所选值:
const [selected, setSelected] = useState({
Weight: "250gr"
});
然后直接通过key访问值:
value={selected[attribute.name]}
我有这段代码,其中我基于存储的对象构建了一堆 select 和选项; 我还想设置“selected”值 onChange,我将 selected 值存储在一个状态中,所以每次我重建 select(基于 select在实际情况下我添加或删除选项)使用 select 状态我重新 select 以前的值;但它似乎不起作用,如果我在不应用的状态上设置一些默认值 我这里有代码:
https://codesandbox.io/s/damp-cherry-wsqyx?file=/src/App.js
我设置了一个默认值
const [selected, setSelected] = useState([{ Weigth: "250gr" }]);
但是(即使使用 useEffect 我也可以看到 selected 有一个值)该值未在 select
中设置该值计算如下:
value={selected.find((o) => o.name === attribute.name)}
查找的结果是“未定义”,即使我很确定 o.name 是 Weigth 并且 attribute.name 也是 Weight
我错过了什么?有帮助吗?
您的对象实际上没有 name
键,您必须将对象更改为:
const [selected, setSelected] = useState([
{ name: 'Weight', value: "250gr" }
]);
然后从找到的对象中获取值:
value={selected.find(o => o.name === attribute.name)?.value}
您还可以考虑使用对象而不是数组来存储所选值:
const [selected, setSelected] = useState({
Weight: "250gr"
});
然后直接通过key访问值:
value={selected[attribute.name]}