useState 第一次更改值
useState changed value just at first time
我的钩子 useState 只改变一次状态,一直都是 1。我该如何修复它?
const My = () => {
const [state,setState] = useState({
count : 0
})
useEffect(() => {
console.log(state);
},[state]);
return (
<div>
<h1>{state.count}</h1>
<button onClick={()=> setState(prevState => ({
...prevState,
count: +1
}))}>Click</button>
</div>
);
};
这是问题()=> setState(prevState => ({ ...prevState, count: +1 }))
,可以这样解决:
onClick={() =>
setState(prevState => ({
...prevState,
count: prevState.count+1
}))
}
您的代码中存在语法错误:count: +1
。
所以,快速修复是这样的:
const My = () => {
const [state,setState] = useState({
count : 0
})
useEffect(() => {
console.log(state);
}, [state]);
return (
<div>
<h1>{state.count}</h1>
<button onClick={()=> setState(prevState => ({
...prevState,
count: prevState.count + 1
}))}>Click</button>
</div>
);
};
但是,您的代码可以简化很多。这将输出完全相同的东西:
const My = () => {
const [count, setCount] = useState(0);
console.log(state);
return (
<div>
<h1>{state.count}</h1>
<button onClick={()=> setCount(count + 1)}>Click</button>
</div>
);
};
我的钩子 useState 只改变一次状态,一直都是 1。我该如何修复它?
const My = () => {
const [state,setState] = useState({
count : 0
})
useEffect(() => {
console.log(state);
},[state]);
return (
<div>
<h1>{state.count}</h1>
<button onClick={()=> setState(prevState => ({
...prevState,
count: +1
}))}>Click</button>
</div>
);
};
这是问题()=> setState(prevState => ({ ...prevState, count: +1 }))
,可以这样解决:
onClick={() =>
setState(prevState => ({
...prevState,
count: prevState.count+1
}))
}
您的代码中存在语法错误:count: +1
。
所以,快速修复是这样的:
const My = () => {
const [state,setState] = useState({
count : 0
})
useEffect(() => {
console.log(state);
}, [state]);
return (
<div>
<h1>{state.count}</h1>
<button onClick={()=> setState(prevState => ({
...prevState,
count: prevState.count + 1
}))}>Click</button>
</div>
);
};
但是,您的代码可以简化很多。这将输出完全相同的东西:
const My = () => {
const [count, setCount] = useState(0);
console.log(state);
return (
<div>
<h1>{state.count}</h1>
<button onClick={()=> setCount(count + 1)}>Click</button>
</div>
);
};