在React功能组件中更改道具时,CodeMirror值未更新

时间:2019-05-15 17:56:34

标签: reactjs react-props react-codemirror

我尝试使用收到的道具更新我的CodeMirror组件(从react-codemirror导入)的值,但是即使道具发生了变化,该值也没有变化。而且由于我是使用corsanywhere从API加载来克服CORS限制的,所以有时提取请求失败。但是,获取成功后,该值仍不会更新。

这是我的尝试的屏幕截图: Attempt

function CodeConsole(props) {
  console.log("CodeConsole props: ", props);
  const options = {
    readOnly: true
  };
  const stdout = props.output.stdout;
  console.log("stdout: " + stdout);
  return <Codemirror value={stdout} options={options} autoFocus={false} />;
}

当我在输入中输入“ hello world”时,这是两个日志语句的控制台输出,以证明道具已更新:

CodeConsole props:  {output: {stdout: "hello world↵", stderr: "", error: ""}}
stdout: we

请参阅下面的答案以获取解决方案

1 个答案:

答案 0 :(得分:0)

我通过将CodeMirror组件替换为常规文本区域来解决了该问题,该文本区域会相应地更新其值。但是,我仍然希望有人解释CodeMirror值更新问题的原因。我正在为代码编辑器和控制台寻找一致的外观和样式,因此仍然非常希望将CodeMirror用于控制台。

更新

问题实际上出在react-codemirror程序中。 我可以使用代码镜像来使用更新且维护良好的react-codemirror2有关更多详细信息,请参见此GitHub issue