ReactJS,Hooks - 如何在 .map() 函数之后设置状态?

Ola*_*ioł 3 javascript reactjs react-hooks

我正在尝试使用数组中的值更改状态。例子:

const [state, setState] = useState({});
const test = [1, 2, 3];
        test.map((item, i) => {
          setState({ ...state, [`item-${i}`]: item });
        });
Run Code Online (Sandbox Code Playgroud)

目前的状态是:

item-2: 3
Run Code Online (Sandbox Code Playgroud)

我想要实现的是:

item-0: 1,
item-1: 2,
item-2: 3
Run Code Online (Sandbox Code Playgroud)

我已经尝试以多种方式进行操作(看起来都很相似),但效果是一样的:/ 有谁知道如何解决它?

谢谢!

pal*_*aѕн 5

您可以使用以下forEach()方法更新状态:

test.forEach((item, i) => {
   setState(state => ({...state, [`item-${i}`]: item}));
});
Run Code Online (Sandbox Code Playgroud)