tot*_*oob 2 reactjs react-hooks
我是否正确更新了“水果”?我认为 Fruits.push('something') 会触发 useEffect 钩子?或者使用 setFruits 会导致重新渲染?
const Fruits = () => {
const [fruitInput, setFruitInput] = useState("")
const [fruits, setFruits] = useState(['Apple', 'Orange'])
const addFruit = fruit => {
console.log('addFruit', fruit)
fruits.push(fruit)
setFruits(fruits)
}
useEffect(() => {
console.log('fruits was updated', fruits)
}, [fruits])
return (
<>
<ul>{fruits.map((fruit, index) => <li key={index}>{fruit}</li>)}</ul>
<input type="text" onChange={ e => setFruitInput(e.target.value) } value={fruitInput} />
<button onClick={() => addFruit(fruitInput)}>Add Fruit</button>
</>
)
}
Run Code Online (Sandbox Code Playgroud)
你fruits在原地改变数组,所以 React 看不到它的变化,也不会触发渲染。将该项目添加到新创建的数组中:
const addFruit = fruit => {
console.log('addFruit', fruit)
setFruits([...fruits, fruit])
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39 次 |
| 最近记录: |