返回上一页时更新状态

Posted

技术标签:

【中文标题】返回上一页时更新状态【英文标题】:Update state when returning to previous page 【发布时间】:2021-09-20 11:55:11 【问题描述】:

我从“个人资料”页面上显示的查询调用中获得了描述。当用户想要编辑此描述时,他们会转到另一个名为“editProfile”的页面。当他们完成编辑后,他们可以按提交,这将更改服务器上的描述。我的问题是,当我返回“个人资料”页面时,UI 中的描述没有更新。我如何最好地解决这个问题?使用钩子或某种状态管理,如 redux?提前致谢

function Profile( navigation : ProfileStackNavProps<"Profile">) 
  const  loading, error, data  = useQuery(GET_DESCRIPTIONS_FROM_ID);
  const [description, setDescription] = useState(data.profiles[0].description);

  return (
     <Text>description</Text>
     //bunch of other code
     <Button
          onPress=() => 
            navigation.navigate("EditProfile",  description );
          
        >

  )


function EditProfile( route : ProfileStackNavProps<"EditProfile">) 
  const [text, setText] = useState(route.params.description);
  const [editDescription,  loading, error ] = useMutation(EDIT_DESCRIPTION);
  return (
    <Center>
      <TextInput onChangeText=setText value=text editable=true />
      <MyButton
        title="Save"
        onPress=() => 
          editDescription(
            variables:  description: text ,
          );
        
      />
    </Center>
  );

【问题讨论】:

【参考方案1】:

当导航到 EditProfile 时,您会传递一个回调函数,如下所示:

<Button
          onPress=() => 
            navigation.navigate("EditProfile",  description,cb:(newDes)=>setDescription(newDes) );
          
        >

然后,当你完成编辑后,调用你传递的函数:

route.params.cb(newDes)

【讨论】:

非常感谢!

以上是关于返回上一页时更新状态的主要内容,如果未能解决你的问题,请参考以下文章

为啥当我返回上一页时,我的 url 不正确(iOS 下的 Chrome,浏览器返回)

返回上一页时,Android应用程序中的服务连接泄漏

网页返回上一页时自动刷新页面

返回上一页时,保存恢复浏览记录(模拟返回不刷新)

thinkphp分页时把后一页记录全部删除,如何返回上一页

vue keep-alive结合scrollTop返回上一页时记忆并且回到原来的滚动位置