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()