我尝试使用收到的道具更新我的CodeMirror组件(从react-codemirror导入)的值,但是即使道具发生了变化,该值也没有变化。而且由于我是使用corsanywhere从API加载来克服CORS限制的,所以有时提取请求失败。但是,获取成功后,该值仍不会更新。
这是我的尝试的屏幕截图:
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
请参阅下面的答案以获取解决方案
答案 0 :(得分:0)
我通过将CodeMirror组件替换为常规文本区域来解决了该问题,该文本区域会相应地更新其值。但是,我仍然希望有人解释CodeMirror值更新问题的原因。我正在为代码编辑器和控制台寻找一致的外观和样式,因此仍然非常希望将CodeMirror用于控制台。
问题实际上出在react-codemirror程序中。 我可以使用代码镜像来使用更新且维护良好的react-codemirror2。有关更多详细信息,请参见此GitHub issue。