在 React(通过 babel 使用 ES6)中,我试图创建一个静态方法来更新它所包含的组件的状态。将对象作为参数。问题是“this”永远不会绑定到词法范围。
static updateList = (Item) => {
this.setState({ cartUpdated: Date.now() }); //setState is not available
}
在另一个组件中...
<div onClick={Cart.updateList.bind(this,this.props)}>Click</div>
起初我认为这可能是由于通过“bind”传递的“this”,但我在包含点击处理程序的组件中创建了一个重复的非静态箭头方法,我可以很好地访问词法“this”。
绝望中还尝试制作 setState 的静态克隆,但没有运气。
我认为这是一个结构/安全决定(如果我们泄露“this”,我们就会泄露所有内容!)但是如何处理对“this”的访问?此限制是否强制 updateList 函数必须位于 updateList 和带有单击处理程序的组件之上?当然,这实际上可能更像反应,但我很好奇。