1 回答
TA贡献1828条经验 获得超13个赞
React 中的兄弟姐妹不直接通信,而是需要通过共享父级进行通信,共享父级拥有共享状态。您可以在主视图状态中定义一个数组来保存终端线。然后 CPU 可以推送到该数组。在下面的代码中,我命名了这个变量terminalLines。
type ExecutionState = {
assemblerOutput: Array<{ line: ParsedLine; bytes: Array<HexNum> }>;
currentInstruction: Instruction;
currentPC: number;
currentInstructionLength: number;
cpuState: CPUState;
terminalLines: string[]
}
然后向终端添加一个属性并将其绑定到数组。
render(): ReactElement {
return (
<>
<Button key={0} onClick={ this.runNextInstruction.bind(this) }>Next</Button>
<TerminalView lines={ this.terminalLines } />
</>
);
}
您将需要为终端上的道具定义一个类,然后将渲染修改为类似于。
render(props: Props): React.ReactElement {
this.terminal.write(props.lines.map(value => value.toAscii()).join(""));
return (
<>
<XTerm
ref={this.terminalRef}
/>
</>
);
}
我还没有机会测试这段代码。您可能需要添加逻辑以保持数组增长过大,例如保留最后几百行。
添加回答
举报