【发布时间】:2020-05-31 19:42:32
【问题描述】:
我正在使用React,但我似乎无法正确定义组件的状态(handlePoints)。当我想使用浅拷贝分配新状态时,它会创建一个新条目(键)。
抱歉,部分问题不在代码中。我无法在这里编辑它。如果您需要更多信息,请与我们联系。谢谢!我添加了一张图片,您可以在其中看到添加了一个新条目,而不是对现有条目进行修改。
cons anecdotes = ['Anecdote A', 'Anecdote B', 'Anecdote C', 'Anecdote D', 'Anecdote E', 'Anecdote F']
const Button = ({text, onClick}) => <div>
<button onClick={onClick}>{text}</button>
const records = () => {
const temp = {};
for (let i = 0; i < anecdotes.length; i++) {
temp[i] = 0;
}
return temp}
const copy = {...records()};
const App = (props) => {
console.log('Copy', copy);
const [selected, setSelected] = useState(0);
const [points, setPoints] = useState(copy);
const handleSelection = () => {
setSelected((Math.random() * (anecdotes.length) ) << 0);
};
const handlePoints = () => {
setPoints({...copy, selected: copy[selected] += 1})
};
return (
<div>
<p>{JSON.stringify({copy})}</p>
<p>{JSON.stringify({points})}</p>
<p>Selected: {selected}</p>
<Button onClick={handleSelection} text={'next anecdote'}/>
<Button onClick={handlePoints} text={'vote'}/>
has {copy[selected]} votes <br/>
{props.anecdotes[selected]} <br/>
</div>
);};
我无法正确设置状态的行是:
const handlePoints = () => {
setPoints({...copy, selected: copy[selected] += 1})
};
【问题讨论】:
标签: reactjs function components state