【发布时间】:2021-05-09 18:27:00
【问题描述】:
不应直接改变 React 状态。但是,如果状态是一个类的实例,它应该可以通过自己的方法进行更改。除了必须使用新参数深度克隆和重新实例化对象之外,还有其他方法吗?
一般来说:在父组件中创建的类对象在子组件中使用同时保持其属性在父状态(通过 props/context 传递)的反应方式是什么?
示例类
class Car{
constructor(data){
this.data = data
}
changeColor = (newcolor) => this.data.color = newcolor
}
示例父组件
const App = ({data}) => {
const [car, setCar] = useState(new Car(data))
return (
<div>
<CarViewer car={car} />
</div>
);
};
示例子组件
const CarViewer = ({car}) => {
return (
<div>
The color is: {car.data.color}
<button onClick={()=>car.changeColor("blue")}>Change color to blue </button>
</div>
);
};
【问题讨论】:
-
这方面的实际例子是什么?
-
我认为这对于在有状态类实例中有一组方法和相应属性的任何用例都是实用的。示例:使用内置缓存函数获取数据并有权访问 window.location.state 的类。它通过 context/props 传递给使用此实例的其他组件。我认为 OOP 可以是一种很好的方法(无论是类还是原型注释),它可以为您的应用程序带来秩序,并问自己当实例是有状态时是否可以以“反应方式”使用它。
标签: javascript reactjs react-hooks use-state