Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 将innerHTML与React一起使用_Reactjs_Innerhtml - Fatal编程技术网

Reactjs 将innerHTML与React一起使用

Reactjs 将innerHTML与React一起使用,reactjs,innerhtml,Reactjs,Innerhtml,我用React制作了一个微型计算器 这是可行的,但我不知道我为什么会这样。有人能给我指出一个我没有完全理解的概念吗 我的密码在下面 以下是我所期望的: 在第一次操作之后(第一次执行getResult函数),我希望必须在clearingState函数中编写一个条件,以便在每次更改状态时重置的innerHTML,这意味着如果您编写: <div id ="display">{this.state.string}</div> {this.state.string} 当您调用c

我用
React
制作了一个微型计算器

这是可行的,但我不知道我为什么会这样。有人能给我指出一个我没有完全理解的概念吗

我的密码在下面

以下是我所期望的:
在第一次操作之后(第一次执行
getResult
函数),我希望必须在
clearingState
函数中编写一个条件,以便在每次更改状态时重置
innerHTML
,这意味着如果您编写:

<div id ="display">{this.state.string}</div>
{this.state.string}
当您调用clearingState函数时,react将检测到您更改了状态,并将再次呈现组件,新状态值将替换语句{this.state.string}

因此,所发生的情况是:每次调用createString函数时都在更改状态,然后react再次调用render函数以反映新状态;然后用户按下“=”操作符,调用getResult函数,您手动更改显示div的内容;如果用户按下“C”按钮,状态将再次更新,并再次渲染以反映新状态


另一件事是,您不应该手动更改div的innerHTML属性。相反,让我们注意反映组件的状态。因此,您应该这样做.setState({string:updatedResult}),而不必担心innerHTML。

每次调用
setState
,都会自动调用
render
(使用新状态)。出于好奇,您是否使用React官方文档作为指南?您不应该在React应用程序中手动更新
innerHTML
。您应该只调用
setState
,让React为您处理DOM的更新。@azium,谢谢您的解释。我替换了这个:
returndocument.getElementById(“display”).innerHTML=updateResult改为:
this.setState({string:updateResult})关于设置状态和渲染,您是对的。但我仍然不明白,为什么以前的代码能起作用。。正如之前编写的那样,我真的认为我正在用updateResult变量重写{this.state.string}。很抱歉,我赶不上这个。。。是的,我正在阅读这些文件,尽管我并不总是理解:)谢谢。我想我没有得到它,因为我以为我在通过调用getResult修改渲染函数中的内容,现在我想得更多了,这是一个愚蠢的想法。非常感谢你们两位@azium:)
<div id ="display">{this.state.string}</div>