同时设置状态和更改场景

时间:2016-04-23 10:20:09

标签: react-native

这更像是一个表现/最佳实践问题。

我目前有一个子组件,需要更改它的父级状态并在父级上运行AJAX请求。按下TouchableHighlight时,子场景需要更改回来,父状态需要更改/执行ajax请求。

我使用React Native Router Flux进行导航。

实现此目的的最佳方法是通过道具将所需的状态更改传递回父级,例如Actions.feed({foo:bar})?

或者我可以通过道具将父方法传递给孩子并从孩子那里执行吗?这种方法会更新父母的状态。

我采用这种方法的问题是,我无法改变父状态并在父进程仍然安装的同时更改场景,并且您无法在安装组件上设置State。有没有办法用父方法的Promise做到这一点,一旦setState完成就可以返回,此时我可以改变Scene?不知道如何做到这一点,或者即使它是最好的方法。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

一般做法是为子组件提供回调。例如:

export default class Child extends Component{
   render(){
       return (<TouchableHighlight onPress={this.props.onItemClicked}>
          ....
       </TouchableHighlight>);
}

export default class Parent extends Component{
.....
    onItemClicked(){
      //ajax request, set state
    }
}

对此进行改进将触发Flux行动。如果您不打算使其可重用,或者您希望它可以重复使用,那么您可以在子组件中执行此操作,从而触发父组件回调中的磁通操作。