这更像是一个表现/最佳实践问题。
我目前有一个子组件,需要更改它的父级状态并在父级上运行AJAX请求。按下TouchableHighlight时,子场景需要更改回来,父状态需要更改/执行ajax请求。
我使用React Native Router Flux进行导航。
实现此目的的最佳方法是通过道具将所需的状态更改传递回父级,例如Actions.feed({foo:bar})?
或者我可以通过道具将父方法传递给孩子并从孩子那里执行吗?这种方法会更新父母的状态。
我采用这种方法的问题是,我无法改变父状态并在父进程仍然安装的同时更改场景,并且您无法在安装组件上设置State。有没有办法用父方法的Promise做到这一点,一旦setState完成就可以返回,此时我可以改变Scene?不知道如何做到这一点,或者即使它是最好的方法。
任何帮助都将不胜感激。
答案 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行动。如果您不打算使其可重用,或者您希望它可以重复使用,那么您可以在子组件中执行此操作,从而触发父组件回调中的磁通操作。