基于the docs的React Navigation,这应该是可行的!但是我试图找出设置中的问题。
每当我尝试通过导航选项传递道具时,子组件都看不到它。
我的代码:
import AddAlarm from '../components/AddAlarm';
export default class AlarmsScreen extends React.Component {
static navigationOptions = {
headerTitle: 'Alarms',
headerLeft: <EditAlarms />,
headerRight: (
<AddAlarm propsTest="value" />
),
};
// ...
}
在组件中:
export default class AddAlarm extends React.Component {
handleAlarmAdd() {
console.log( this.props.propsTest );
}
// ...
}
这引发了一个错误,即找不到所需的道具。我什至尝试只记录props对象本身,却得到“未定义”。
我正在使用Expo并在iOS模拟器中运行它。在正常情况下传递的道具(通过render()的返回)可以正常工作。
答案 0 :(得分:1)
您是否验证了this
中handleAlarmAdd
的值?您可能需要写handleAlarmAdd = () => {...}
答案 1 :(得分:1)
您的片段代码似乎正确。我想检查一下您如何调用handleAlarmAdd
函数,因为如果您不想将其声明为箭头函数或将其绑定到构造函数中,则必须像以下示例一样调用它:onPress={() =>{this.handleAlarmAdd()}}
。>
答案 2 :(得分:0)
可以使用
传递导航属性
this.props.navigation.navigate('ScreenName',{propsTest:“ Test”}));
在导航屏幕的构造函数中,请使用 props.navigation.state.propsTest