如何解决在本机反应中,函数未通过作为道具的一部分
我有以下代码,用于从App组件显示的抽屉导航器。我试图将属性saveUser
传递到从App组件到MyDrawer组件的本地函数,但是在MyDrawer函数中始终未定义。但是,当我将字符串属性userName
传递给MyDrawer时,该属性就会被传递。
问题
为什么即使userName被传递,函数也不会作为道具的一部分从App组件传递到MyDrawer函数?
App.js代码段
const Drawer = createDrawerNavigator();
function MyDrawer(props) {
alert("in MyDrawer function : props.saveUser is " + props.saveUser);
alert("in MyDrawer function : props.userName is " + props.userName);
return (
<Drawer.Navigator
drawerContent={(props) => <CustomDrawerContent {...props} />}>
<Drawer.Screen name="Home" component={HomeStack} />
<Drawer.Screen
name="Create Task"
component={CreateTaskStack}
initialParams={{ saveUser: props.saveUser }}
/>
</Drawer.Navigator>
);
}
export default function App() {
const setUser = () => {
alert('User will be set in this function');
};
setUser.bind(this);
return (
<NavigationContainer>
<MyDrawer saveUser={this.setUser} userName="sunil" />
</NavigationContainer>
);
}
解决方法
export default function App() {
const setUser = () => {
alert('User will be set in this function');
};
return (
<NavigationContainer>
<MyDrawer saveUser={setUser} userName="sunil" />
</NavigationContainer>
);
}
由于您的App组件已经是具有内部功能的功能组件,因此您不必绑定它,也不必调用this.setUser。只需直接调用put setUser,就应该传递您的函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。