假设我初始化组件的状态如下:
getInitialState: function(){
return {name: "Bob Smith",
phone: "555-555-5555",
location: "San Francisco, CA",
best-friend: "Bill Jacobson",
favorite-color: "Orange"}
},
Run Code Online (Sandbox Code Playgroud)
然后,如果我只想修改其中一个状态,我被告知以下是禁止的:
this.state.name = "John Smith";
Run Code Online (Sandbox Code Playgroud)
但我应该使用:
this.setState({name: "John Smith",
phone: this.state.phone,
location: this.state.location,
best-friend: this.state.best-friend,
favorite-color: this.state.favorite-color});
Run Code Online (Sandbox Code Playgroud)
必须有一种更有效的方法来做到这一点.是否有一种速记方式可以以一种安全的方式改变我的状态对象的一个属性?
对不起令人困惑的标题; 如果我的某个组件上有onClick属性,如下所示
<Component onClick={this.doSomething()} />
Run Code Online (Sandbox Code Playgroud)
根据doSomething()函数实际调用的内容,我经常会遇到奇怪的错误.如果doSomething()正在改变状态,特别是我得到各种渲染错误.另一方面,如果我这样做
var _this = this;
<Component onClick{
function(){
_this.doSomething()
}
} />
Run Code Online (Sandbox Code Playgroud)
所有错误都消失了,一切都按照我的意图行事.通过将我的onClick属性包装在使其工作的匿名函数中,我到底在做什么?有没有更好的方法来做我想做的事情?
所以我想从命令行读取 10 个整数,然后通过子程序打印这些值的总和。
我有以下相关代码:
...
sub sp, sp, #40 // making room on the stack
mov r4, sp // use r4 as our working register for where we are in our space
loop:
(looping through this 10 times)
ldr r0, =rdfmt
mov r1, r4
bl scanf
add r4, r4 #4
done:
bl sum
sum:
push {lr}
(how do I load those back in from the stack?)
...
Run Code Online (Sandbox Code Playgroud)
在我的 sum 子例程中,我想在堆栈中迭代 10 次并获得我刚刚读入的值的总和。你是怎么做到的?