微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

material-ui v4.11.1 - 不能为功能组件提供参考尝试访问此引用将失败你的意思是使用 React.forwardRef() 吗?

如何解决material-ui v4.11.1 - 不能为功能组件提供参考尝试访问此引用将失败你的意思是使用 React.forwardRef() 吗?

因此,我们从 material.ui 中实现了 Modal,并且我们尝试根据作为 props 传入的内容在 modal 内安装不同的组件。执行此操作后,我们收到错误消息“无法为函数组件提供 refs。尝试访问此 ref 将失败。您是要使用 React.forwardRef() 吗?”。

我们试图了解如何使用 React.forwardRef() - 我们已经阅读了这个线程例如 (How can I use forwardRef() in React?) - 但无法真正理解如何在我们的代码中具体实现它.

非常感谢您对我们如何实现 React.forwardRef() 以消除错误的帮助。

这是我们的代码(模态)

const useStyles = makeStyles(() => ({
  backdropModal: {
    display: 'flex',alignItems: 'center',justifyContent: 'center'
  }
}))

const ModalContainer = ({ component,editMode,setEditMode }) => {
  const classes = useStyles()

  return (
    <Modal
      open={editMode}
      onBackdropClick={() => setEditMode(false)}
      className={classes.backdropModal}
    >
      {component}
    </Modal>
  )
}

这是我们安装 Modal 的地方

      <ModalContainer 
        editMode={editMode}
        setEditMode={setEditMode}
        component={
          <EditTask
            item={item} 
            setEditMode={setEditMode}
          />
        }
      />

这是 EditTask 组件

    <EditTaskForm>
      <SubContainer>
        <InputField 
          id="input-task-title"
          label="Task title"
          type="text" 
          value={taskTitle} 
          handleChange={setTaskTitle} 
        />
        <InputField 
          id="input-task-description"
          label="Description"
          type="text" 
          multiline={true}
          value={taskDesc} 
          handleChange={setTaskDesc} 
        />
        <InputField 
          id="input-task-comments"
          label="Comments"
          type="text" 
          multiline={true}
          value={taskComments} 
          handleChange={setTaskComments} 
        />
      </SubContainer>
      <ButtonsContainer>
        <SaveButton 
          type="button"
          onClick={handleFormSubmit}
        >
          SAVE
        </SaveButton>
        <CancelButton onClick={() => setEditMode(false)}>CANCEL</CancelButton>
      </ButtonsContainer>
    </EditTaskForm>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。