首页 > 解决方案 > React native navigation.setParams 没有设置任何新参数

问题描述

我想设置一个新函数作为参数,所以我使用props.navigation.setParams({inside useEffect。稍后,我想从我的headerRight:按钮调用这个新功能。这是我的代码:

useEffect(() => {
    props.navigation.setParams({
      onPress: () => {
        onSubmit();
      },
    });
  }, []); 

    const onSubmit = () => {
    console.log("on submit was pressed: ");
  };



    useLayoutEffect(() => {
    props.navigation.setOptions({
      headerRight: () => (
        <Feather
          style={{ padding: 20 }}
          name="check"
          size={24}
          color="blue"
          onPress={() => {
            console.log(props);
            const onPress = props.route.params; // it seems I dont have onPress property
            if (onPress) onPress();
          }}
        />
      ),
    });
  }, [props.navigation, username, bio, image, imageChanged, name]);

当我这样做console.log(props);是我的输出:

Object {
  "currentUser": Object {
    "bio": "bah",
    "name": "blah blah",
    "username": "blaaaaaaaah",
  },
  "fetchUser": [Function anonymous],
  "navigation": Object {
    "addListener": [Function addListener],
    "canGoBack": [Function canGoBack],
    "dangerouslyGetParent": [Function dangerouslyGetParent],
    "dangerouslyGetState": [Function anonymous],
    "dispatch": [Function dispatch],
    "goBack": [Function anonymous],
    "isFocused": [Function isFocused],
    "navigate": [Function anonymous],
    "pop": [Function anonymous],
    "popToTop": [Function anonymous],
    "push": [Function anonymous],
    "removeListener": [Function removeListener],
    "replace": [Function anonymous],
    "reset": [Function anonymous],
    "setOptions": [Function setOptions],
    "setParams": [Function anonymous],
  },
  "route": Object {
    "key": "Profile-sdsdfjnsdfsdfP_bI",
    "name": "Profile",
    "params": undefined,   //!!!params is undefined
  },
}

为什么我的参数未定义以及如何设置它们以获取我的功能?

标签: javascriptreactjsreact-nativereact-navigation

解决方案


推荐阅读