这通常是因为多个组件使用了相同的状态变量。解决方法是为每个组件创建一个独立的状态,或者使用传递属性的方法来避免状态冲突。
例如,下面的代码演示了两个组件共享相同的状态变量的情况:
import React, {useState} from 'react'
function ComponentA() {
const [count, setCount] = useState(0)
const handleClick = () => {
setCount(count + 1)
}
return (
Component A
Count: {count}
)
}
function ComponentB() {
const [count, setCount] = useState(0)
const handleClick = () => {
setCount(count + 1)
}
return (
Component B
Count: {count}
)
}
function App() {
return (
)
}
在这个例子中,当你点击“ComponentA”的按钮时,将增加“count”的值并更新“ComponentA”中的状态和UI。然而,当你尝试从“ComponentB”进行同样的操作时,只有“ComponentA”的状态和UI被更新了。
要避免这个问题,可以使用不同的状态以及属性传递来改变组件。例如,下面是使用属性传递和在各自状态中保存计数器的修改后的代码:
import React, {useState} from 'react'
function ComponentA() {
const [count, setCount] = useState(0)
const handleClick = () => {
setCount(count + 1)
}
return (
Component A
Count: {count}
)
}
function ComponentB() {
const [count, setCount] = useState(0)
const handleClick = () => {
setCount(count + 1)
}
return (
相关内容