Javascript react中是否有状态变量观测器?

Javascript react中是否有状态变量观测器?,javascript,reactjs,Javascript,Reactjs,tl;dr——我想在组件中的状态发生变化时触发回调 我有一个组件,它变异this.props.items并在每次变异时激发this.props.onChange。我目前正在做这样的事情: removeItem(ix) { const items = this.state.items.slice(); items.splice(ix, 1); this.setState({ items }); this.triggerOnChange(); } 我想知道是否有可能删除对Trig

tl;dr——我想在组件中的状态发生变化时触发回调


我有一个组件,它变异
this.props.items
并在每次变异时激发
this.props.onChange
。我目前正在做这样的事情:

removeItem(ix) {
  const items = this.state.items.slice();
  items.splice(ix, 1);
  this.setState({ items });
  this.triggerOnChange();
}

我想知道是否有可能删除对
TriggerChange
的手动调用,并在更新
此.state.items
时执行此操作。setState接受两个参数,第一个是对象(状态),第二个是回调(可选)

第二个参数是一个可选的回调函数,它将 完成设置状态并重新呈现组件后执行


如果要包装状态更改,可以覆盖
setState

setState(state) {
  console.log("New state - before: ", state);
  const retVal = super.setState(state);
  console.log("New state - after");
  return retVal;
}
(这可能有些过分,我不认为
setState
被记录为有返回值;但令人沮丧的是,据我所知,没有记录为不…)

例如:

类MyThingy扩展了React.Component{
建造师(道具){
超级(道具);
this.state={…props};
}
render(){
返回(
this.update()}>
{this.state.title}
{this.state.items.map(e=>(
{e}
))}
);
}
更新(){
这是我的国家({
项目:['a','b','c'],
标题:“之后”
});
}
设置状态(状态){
log(“新状态-之前:”,状态);
const retVal=super.setState(状态);
日志(“新状态-之后”);
返回返回;
}
}
ReactDOM.render(
,
document.getElementById(“react”)
);


很酷,很高兴知道!这仍然有一个类似的问题,因为我需要手动添加
This.triggerochange
作为回调。我正在寻找一个类似于状态观测器的东西,这样我就可以做
这个。关于('stateChange',…)
这仍然是一个有用的答案,对于其他需要稍微不同的人来说,这是一个不错的答案!看起来应该有用,谢谢!仅供参考:
setState(state){super.setState(state,(state.items!==this.state.items)?this.triggerochange:noop);}
@zyklus:不用担心!(我发现我做错了什么。傻孩子,我用的是
props
,而不是
state
triggerochange
是用来触发
这个.props.onChange()
,而不是渲染更新
setState(state) {
  console.log("New state - before: ", state);
  const retVal = super.setState(state);
  console.log("New state - after");
  return retVal;
}