【发布时间】:2021-10-13 17:12:43
【问题描述】:
我有 2 个状态的产品和变体,我调用一个 API 并将这两个状态的值设置为 API 响应。
我希望产品状态保持原样而不更新
const [product, setProduct] = useState({} as any);
const [variations, setVariations] = useState([] as any);
useEffect(() => {
const getProduct = async () => {
const data = await axios.get("/products?id=4533843820679");
console.log(data);
setProduct(data.data);
// @ts-ignore
setVariations([data.data]);
};
getProduct();
}, []);
作为回报,我映射变体数组并返回标题、价格和添加变体的按钮的输入。添加变体会将另一个产品添加到变体数组中。所以它只是将产品推向变化。
然后我输入了变量中的标题和变量中的价格。变量。问题在于 onChange。
当我更改变体中一个元素的价格时,它会针对所有元素进行更改,也会针对 PRODUCT 状态进行更改。
代码可以在这里找到:https://codesandbox.io/s/smoosh-firefly-6n747?file=/src/App.js
添加变体,更改价格添加另一个变体,您会看到我面临的所有问题。
【问题讨论】:
-
在您的 CodeSandbox 示例中,您没有对产品进行深度复制,因此
variants数组在对象之间共享。
标签: javascript reactjs react-hooks