在一个电子React应用程序中,我运行了一个shell命令,输出是逐行接收的,我如何动态地创建元素并将其添加到DOM中?
我用这个方法是有效的,但是,有没有更好的方法呢?
import Titlebar from "./components/Titlebar/Titlebar"
import { useState } from "react"
let shellOutput = []
const [currentShellOutput, setCurrentShellOutput] = useState(shellOutput)
ElectronAPI.execShellCommands(["spicetify apply"])
ElectronAPI.receive("sendToRenderer/shell-output", (outputString) => {
console.log(outputString)
setCurrentShellOutput((value) => {
return value.concat([outputString])
})
})
export default function App() {
return (
<>
<Titlebar></Titlebar>
{currentShellOutput.map((output) => (
<p className="terminal-output">{output}</p>
))}
</>
)
}
左右输出相同,我没有格式化,所以不关心它们
1条答案
按热度按时间wecizke31#
如果我没有理解错的话,
spicetify
shell在完成工作后会打印shell-exited
,那么为什么不创建一个数组,在后台填充数据,并在shell退出后才呈现给DOM呢?