问题描述
此页面功能为编辑页面
EditorDemo为了组件
如图所示 上面的标题 保存 分类为父组件,下面的编辑器为子组件,那么问题来了,如果我在现有内容#11111
的基础上复制粘贴上传一个图片,此上传逻辑代码在子组件中,上传成功后我会拿着上传之前的内容#1111
与返回的图片链接拼接一块再setValue更新value值,
此为子组件中的数据与SimpleMDE的绑定
const [value, setValue] = useState('');
<SimpleMDE
onPaste={pasteEvent}
value={props.content}
onChange={onChange}
options={userOptions}
/>
由于更新了value值此时会重新渲然子组件,而父组件传给props中的content就会覆盖新生成的value值,造成一打开页面的的内容一直覆盖后面需要生成的数据
此为父组件中引入的子组件代码
<EditorDemo
markdownContentRef={markdownContentRef}
content={content}
/>
问题解决
把数据加载代码提到父组件中,并把这个函数引用传子组件,子组件回调父组件中的上传代码
即代码如下:
父组件中
const imagePast = (evt) =>{上传代逻辑}
<EditorDemo
markdownContentRef={markdownContentRef}
content={content}
imagePast={imagePast}
/>
子组件中
const pasteEvent = (evt) => {
props.imagePast(evt);
};
<SimpleMDE
onPaste={pasteEvent}
value={props.content}
onChange={onChange}
options={userOptions}
/>