gpt4 book ai didi

javascript - 使用 Hooks 在 React 中更新数组

转载 作者:数据小太阳 更新时间:2023-10-29 05:09:07 25 4
gpt4 key购买 nike

我正在尝试了解 React Hook API 的工作原理。我正在尝试向列表中添加一个数字。我评论的代码,即 myArray.push ...似乎没有执行该操作,尽管它下面的代码工作正常。为什么会这样?

import React, {useState} from 'react'

export default () => {

const [myArray, setArray] = useState([1,2,3])

return (
<div>
{myArray.map((item=>{

return <li>{item}</li>

}))}
<button onClick = {()=>{

// myArray.push(myArray[myArray.length-1]+1)
// setArray(myArray)

setArray([...myArray, myArray[myArray.length-1]+1])

}}>Add</button>
</div>
)
}

最佳答案

对于比单个值更复杂的情况,我建议使用 useReducer

function App() {
const [input, setInput] = useState(0);

const [myArray, dispatch] = useReducer((myArray, { type, value }) => {
switch (type) {
case "add":
return [...myArray, value];
case "remove":
return myArray.filter((_, index) => index !== value);
default:
return myArray;
}
}, [1, 2, 3]);

return (
<div>
<input value={input} onInput={e => setInput(e.target.value)} />
<button onClick={() => dispatch({ type: "add", value: input})}>
Add
</button>

{myArray.map((item, index) => (
<div>
<h2>
{item}
<button onClick={() => dispatch({ type: "remove", value: index })}>
Remove
</button>
</h2>
</div>
))}
</div>
);
}

关于javascript - 使用 Hooks 在 React 中更新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54770234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com