Javascript setState()是否可用于更新Alt.js存储中的状态?
是的,我知道Javascript setState()是否可用于更新Alt.js存储中的状态?,javascript,reactjs,reactjs-flux,alt.js,Javascript,Reactjs,Reactjs Flux,Alt.js,是的,我知道setState()会更新存储的状态并向所有订阅者发出更改事件,但我发现并不是每个人都使用它,并在更新状态时忽略它 例如,在下面的示例中,它们不使用setState(): 但是,在使用过程中: class LocationStore { constructor() { this.bindAction(locationActions.updateLocation, this.onUpdateLocation); this.state = {
setState()
会更新存储的状态并向所有订阅者发出更改事件,但我发现并不是每个人都使用它,并在更新状态时忽略它
例如,在下面的示例中,它们不使用setState()
:
但是,在使用过程中:
class LocationStore {
constructor() {
this.bindAction(locationActions.updateLocation, this.onUpdateLocation);
this.state = {
city: 'Denver',
country: 'US'
};
}
onUpdateLocation(obj) {
const { city, country } = obj
this.setState({ city, country });
}
}
所以我想知道这两种方式有什么不同?没有一种,真的: setState由Alt在内部用于设置状态。您可以覆盖它以提供自己的setState实现。在内部,setState是Object.assign的别名。setState必须返回一个对象 例如: 假设您所在的州:
{
city: 'Denver',
country: 'US',
}
更新状态的两种方式:
this.setState({city: 'Colorado Springs'})
console.log(this.state) // {city: 'Colorado Springs', country: 'US' })
this.state = { city: 'Elbert' }
console.log(this.state) // state is {city: 'Elbert'}
如您所见,
this.state=
覆盖状态,而this.setState()
将新状态合并到旧状态。看真的没有一个:
setState由Alt在内部用于设置状态。您可以覆盖它以提供自己的setState实现。在内部,setState是Object.assign的别名。setState必须返回一个对象
例如:
假设您所在的州:
{
city: 'Denver',
country: 'US',
}
更新状态的两种方式:
this.setState({city: 'Colorado Springs'})
console.log(this.state) // {city: 'Colorado Springs', country: 'US' })
this.state = { city: 'Elbert' }
console.log(this.state) // state is {city: 'Elbert'}
如您所见,
this.state=
覆盖状态,而this.setState()
将新状态合并到旧状态。请参见如果省略了this.setState()
,则默认情况下会调用它,对吗?不。您将只覆盖整个状态,而不是合并它。我还注意到,直接赋值状态并不总是触发emitChange()
所以如果省略了this.setState()
,则默认情况下会调用它,对吗?不。您将只覆盖整个状态,而不是合并它。我还注意到,直接分配状态并不总是触发emitChange()