如何解决suneditor-react 组件正在更改父状态属性
我使用 suneditor-react
库作为文本编辑器。
我有一个组件可以多次呈现 suneditor-react
包装组件,具体取决于
状态变量:
- 在第一种情况下,组件呈现
suneditor-react
包装组件 5 次。 - 在秒的情况下,组件呈现
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 举报,一经查实,本站将立刻删除。