在class 外面 定义:

const TypeChnage=(props)=> {
console.log(props.type,'ssssssssssssssssssssssss')
const init = () => {
console.log('cccccccccc')
};
useEffect(() => {
props.init();
}, [props.type]);
return null;
}

React监控url参数值变化后执行(componentWillReceiveProps最佳替代方案)_react

使用的时候可以直接传值 跟方法:比如 在 render 里面 跟组件一样执行:

<TypeChnage type={this.$Tool.getUrlKey('type')} init={()=>this.init()}/>

React监控url参数值变化后执行(componentWillReceiveProps最佳替代方案)_react_02

 传方法 记得用 箭头函数或者 this.init.bind(this)

这就在 url该参数变化的时候会执行 这代码  也就不需要其他地方执行init 初始化了