gpt4 book ai didi

javascript - 具有动态数组长度的 react 钩子(Hook)

转载 作者:行者123 更新时间:2023-12-02 19:49:05 26 4
gpt4 key购买 nike

我有以下虚拟示例:

function App({size}) {
const [values, setValues] = React.useState(Array(size).fill(''));
function onChange(index, event) {
console.log('setting index: ', index)
console.log('to value: ', event.target.value);
values[index] = event.target.value;
setValues(values);
}

console.log('values are');
console.log(values);

const inputs = Array(size).fill().map((_, index) => (
<input
key={`input-${index}`}
value={values[index]}
onChange={e => onChange(index, e)}
/>
));

return (
<React.Fragment>
{inputs}
</React.Fragment>
)
}

ReactDOM.render(
<App size={3} />,
document.getElementById('container')
);

我希望能够将 size 传递给 App 并动态获取那么多输入。

当我运行它并输入输入时,我看到了

values are
["", "", "", ""]
setting index: 3
to value: s
setting index: 1
to value: e
setting index: 0
to value: f

看起来我的组件没有重新渲染。这是为什么?

最佳答案

您的问题很可能是您试图直接改变状态。在您的 onChange 函数中,您应该确保不要尝试改变它。

function onChange(index, event) {
const newValues = values.map((value, i) => {
return i === index ? event.target.value : value;
});
setValues(newValues);
}

关于javascript - 具有动态数组长度的 react 钩子(Hook),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58635434/

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