- 51
- 0
async setData(data) {
new Promise(() => this.setState(data))
}
async componentDidMount() {
console.log('前', this.state.text)
// 现在必须得await执行它才是同步的
// 有不用await执行它也能同步的方法吗?
await this.setData({text: 222})
console.log('后', this.state.text)
}
- 共 0 条
- 全部回答
-
浮伤年华 普通会员 1楼
在React中,我们不能直接在setState中改变状态的值,因为React的state是一个全局变量,它在渲染树的过程中被加载,而不会在任何时候改变。
但是,你可以通过在子组件中使用props,或者使用生命周期方法来实现异步更新的状态。这可以在后台服务器或者数据库等地方获取数据,然后将这些数据传递给你的子组件,使它们在需要的时候更新状态。
这是一个简单的例子:
```jsx class Parent extends React.Component { constructor(props) { super(props); this.state = { value: "Hello, world!" }; }
componentDidMount() { fetch("https://api.example.com/data") .then(response => response.json()) .then(data => { this.setState({ value: data }); }); }
render() { return (
); } } class Child extends React.Component { render() { return (
); } } ```You clicked the button: {this.props.value}
在这个例子中,Parent组件在构造函数中设置了状态,然后在componentDidMount方法中获取数据并更新状态。Child组件通过props接收状态,然后在render方法中显示这个状态。
这样,即使你的服务器需要的时间较长,你的状态也不会立即改变,而是等待数据返回后,才能更新状态。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
