react-native - 使用 react-native-router-flux 时如何在屏幕之间传递道具
问题描述
App.js 狙击手
render() {
if (!this.state.isLoadingComplete && !this.props.skipLoadingScreen) {
return (
<AppLoading
startAsync={this._loadResourcesAsync}
onError={this._handleLoadingError}
onFinish={this._handleFinishLoading}
/>
);
} else if (!this.state.isAuthenticated) {
return (
<Router>
<Scene key="root">
<Scene key="signIn"
component={SignIn}
title="Scarlet"
initial
/>
<Scene
key="signUp"
component={SignUp}
title="Gray"
/>
</Scene>
</Router>
)
} else {
return (
<AppNavigator/>
)
}
}
我想做的是将 isAuthenticated 状态变量作为道具传递给 SignIn 组件。然后,在成功调用我的身份验证服务后的 SignIn 回调中,我可以更新 prop 并返回 App.js,而不是渲染 SignIn/SignUp,AppNavigator 组件将被渲染。
我无法找到有关如何在这些值之间传递这些值的文档或示例。
在 react-native-flux-router 中传递道具
我找到了上面的这个例子,但我对道具被分配给handleClick的事实感到困惑
如何将值传递给 React-Native-Router-Flux 中的其他组件?
我还发现了这个例子,它看起来很有希望,但我不确定 Actions.key{props} 的去向。此人似乎已将其分配给 onPress。
我的问题是我没有使用点击在此处的场景之间导航。我在 SignIn 和 SignUp 中使用 Action 对象。
抱歉,我知道这是漫无边际的,但我希望有人以前见过。
解决方案
如果我没看错,你想调用一个动作并将一个变量作为属性传递。
Actions.signIn({ isAuthenticated: true });
然后你isAuthenticated
在signIn
场景中使用这个属性this.props.isAuthenticated
。
或者,如果您想将函数作为属性传递:
let myFunction = () => {
//do some magic here
};
Actions.signIn({ doMagic: myFunction });
然后在您的signIn
呼叫this.props.doMagic();
中myFunction
并被呼叫。
推荐阅读
- javascript - 如何在 Meteor 中启用 babel-plugin-rewire
- javascript - 为什么我得到一个“df.worker.min.js”被加载,即使它的 MIME 类型(“text/html”)不是一个有效的 JavaScript MIME 类型”
- postgresql - 字符串需要用作列
- css - 在一个项目中混合 scss 和 less 文件(引导自定义上下文)
- mysql - oracle到mysql转换中的数字列类型
- javascript - 使递归函数不可变?
- sql - 存储过程中的动态查询不返回错误但插入记录失败
- php - 使用最后一个视频过滤器(订单=日期)从 YouTube API 获取数据停止工作
- php - 用 PHP 发送多封邮件
- android - 使用 Facebook Live Video API 时如何以编程方式指定视频流旋转