React 怎么自执行

#1

父组件里有个方法改变state,将这个方法传入某一个子组件,怎么在该组件内部不通过指定事件名称情况下调用该方法

componentDidMount () {
    var that = this;
    // this.props.flag=true;
    // console.log( this.props.flag);
    var onMsa = this.props.onflag;
    console.log(onMsa);
    onMsa;
    (function(){
        onMsa;
        console.log(that.props.flag);
    })();

};

就是这样的,怎么让onflag这个方法在这个钩子里执行一遍,不要redux,和router,纯react能实现不

<M_indexheader_kind onflag = {this.sMgai.bind(this)} flag = {this.state.flag} /> //向子组件传递

#2

<Child 该方法={this.该方法}}/>

componentDidMount() {
this.props.该方法()
}

1 Like
#3

嗯,调用成功了;
sMgai () {
this.setState({flag:true});
console.log(’----------’);
console.log(‘方法已被执行’);
console.log(this.state.flag);//false

};

但是 this.setState({flag:true});这个怎么没能起作用

#4

你的state是父组件的吗,在子组件中的this是子组件作用域的,不属于父组件

#5

对啊,父组件里的,但是我调方法是bind了呀
<M_indexheader_kind onflag = {this.sMgai.bind(this)} />

#8

这个this是指向父组件的,因为this.state.flag 返回的就是false啊,证明this属于父组件啊,这个flag是父组件的state

#9

恩,setState是异步的,你点击的时候,在当前函数还没有执行更新,在render打印能看到更新。

#10

茅塞顿开呀,大哥,这样吧,我这问题是这样的,我想给子组件的加载排个顺序,得第一个组件加载完成才能加载第二个组件,一次类推,怎么做啊

#11

方法1、

async function a() {
  await <Com1 />
  await <Com2 />
  await <Com3 />
}

方法2、

function* a() {
  yield <Com1 />
  yield <Com2 />
  yield <Com3 />
}
#12

太感谢了,我去试验一下