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

suneditor-react 组件正在更改父状态属性

如何解决suneditor-react 组件正在更改父状态属性

我使用 suneditor-react 库作为文本编辑器。 我有一个组件可以多次呈现 suneditor-react 包装组件,具体取决于 状态变量:

  1. 在第一种情况下,组件呈现 suneditor-react 包装组件 5 次。
  2. 在秒的情况下,组件呈现 suneditor-react 包装组件 8 次。

textareas 的内容保存在父状态中,状态处理程序传递给 作为属性的编辑器包装器:

const [answers,setAnswers] = useState([]);

answers - 保存在 textarea 中的值。

以下是根据变量 typeID 呈现编辑器的方法

  const options = (typeID) => {
    if (typeID === 1) {
      return <EditorComp1 answers={answers} setAnswers={setAnswers} />;
    }
    if (typeID === 2) {
      return <EditorComp2 answers={answers} setAnswers={setAnswers} />;
    }
    return null;
  };

虽然 typeID 发生了变化,但 answers 状态也发​​生了变化:

  useEffect(() => {
    let items = [];
    let numbers = [1,2,3,4,5];
    if (typeID === 2) numbers = [1,5,6,7,8];
    numbers.map((ind,i) => {
      let item = {
        value: i,body: ''
      };
      items.push(item);
    });
    setAnswers(items);
  },[typeID]);

最后,编辑器组件的渲染方法如下所示:

      {answers.map((answer,i) => (
        <Box mb={2} key={i}>
          <Grid container spacing={3}>
            <Grid md={1} item>
              <CheckBox checked={isChecked(answer.value)} onChange={(e) => onAnswered(e,answer.value)} />
            </Grid>
            <Grid md={11} item>
              <Editor setContents={answer.body} onChange={content => onContentChange(content,answer.value)} />
            </Grid>
          </Grid>
        </Box>
      ))}

问题在于,当调用 <Editor> 组件 onChange 时,answers 状态发生了变化:

我不知道为什么它会改变,因为我没有在这里改变任何状态。 如果您有任何建议,请帮助我!

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