繁体   English   中英

在 useMemo 钩子内的反应路由器链接中使用时,状态未定义

[英]State is undefined when used in react router link inside useMemo hook

我正在使用 react router 导航到另一个页面,并在 useMemo 中使用这个将状态传递到该页面

 const columns = React.useMemo(
    () => [
      {
        Header: "Actions",
        id: "actions",
        Cell: (tableProps) => {
          return (
            <>
               <Link
                to={{
                  pathname: "list-table/list-table-edit",
                  state: { selectedRow },
                }}
              > 
              <span
                style={{
                  cursor: "pointer",
                  color: "grey",
                  textDecoration: "underline",
                }}
                onClick={(event) => {
                  
                  setSelectedID(tableProps.row.original.asset_ID);
                }}
              >
                <Tooltip title="Edit Row">
                  <EditButton aria-label="edit">
                    <CreateIcon fontSize="small" />
                  </EditButton>
                </Tooltip>
              </span>
               </Link> 
            </>
          );
        },
      },
      ...MakeTableColumns,
    ],
    [selectedRow]
  );

我的状态是这样声明的

  const [selectedID, setSelectedID] = useState();
  const selectedRow = oriData.find((row) => row.asset_ID === selectedID);

当用户单击Edit ,它会将行 ID 设置为selectedID并且selectedRow查找行值并传递到list-table-edit页面。 但是,当我从list-table-edit控制台props.location.state时,它显示undefined 当我在useMemo之外取出<Link> ..并给出状态 ID 时,它工作正常,我认为useMemo 如果有人可以提供帮助,我将不胜感激,谢谢

更新

现在我从state: { selectedRow }更改为state: { tableProps.row.original }并传递到另一个页面,它无需传递状态即可工作。 我可以通过调用tableProps.row.original获得选定的行值。

<Link to={{ pathname: '/list-table/list-table-edit', state: { record: selectedRow} }}>My route</Link>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM