当前位置: 首页 > 知识库问答 >
问题:

在ComponentDDMount中调用的setState没有更新状态?[重复]

慕震博
2023-03-14

我不熟悉react native,我在这里尝试在加载组件时更新状态。但是,状态没有更新。

constructor(props) {
super(props);

this.state = {
 selectedSection: 'None',
 sectionObject: { index: 0, key: ''},
 sectionIndex: 0,
 sectionArray: [],
 };
}

componentDidMount()
{
 this.setState({
 sectionObject: { index: this.state.sectionIndex, key: this.state.selectedSection},
 sectionArray: this.state.sectionArray.concat(this.state.sectionObject),
 })
 console.log('sectionObject:',this.state.sectionObject);
 console.log('section array:',this.state.sectionArray);
}

我做错了什么?

共有2个答案

帅博简
2023-03-14

当您尝试登录时,可以看到旧值。尝试登录setState回调,如此setState({key:value},()=

红弘盛
2023-03-14

使现代化

我想这是一个异步,所以你可以在渲染中看到更新的状态。

class Hello extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            selectedSection: 'None',
            sectionObject: { index: 0, key: '' },
            sectionIndex: 0,
            sectionArray: [],
        };
    }

    componentDidMount() {
        this.setState({
            selectedSection: 'Wowowowowow',
        })
    }

    render() {
        console.log(this.state.selectedSection)
        return <div>{this.state.selectedSection}</div>
    }
}

ReactDOM.render(
    <Hello name='World' />,
    document.getElementById('container')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container"></div>
 类似资料:
  • 问题内容: 我觉得我已经在阳光下尝试了所有东西,但是一定缺少一些非常明显的东西。在下面,我试图将一个新项目推入数组并更新状态,但是无论我做什么,状态都不会从初始数组更改。 当我console.log newListItems时,新项目就包括在内,因此到目前为止所有工作都在进行,它是不会更新的实际状态。我想念什么? addItem方法: 我也没有在控制台中收到任何错误消息。 完整代码: 问题答案:

  • 我正在从一个文件导出常量并将其导入另一个文件,如下所示: 常数.js App.js 我希望我的初始状态是在构造函数中设置的,然后在componentWillMount上,我希望使用常量文件中的值设置状态,然后再围绕组件和流添加进一步的逻辑。 但是,我发现,我的状态没有被更新,如果我在调用setState之后记录控制台日志,状态仍然没有定义,如果我引入一个方法,需要state中的值,那么在执行堆栈的

  • 我有一个简单的组件 问题是我需要添加什么

  • 问题内容: 是否有原因在循环中调用会阻止其多次更新状态? 我有一个非常基本的jsbin,突出了我所看到的问题。有两个按钮。一个将状态计数器更新为1。另一个在循环中调用One的基础函数- 似乎将多次更新状态。 我知道此问题的几种解决方案,但我想确保首先了解这里的基本机制。为什么不能循环调用?我是否笨拙地编写了代码,以至于无法达到预期的效果? 问题答案: 从React Docs: setState()

  • 所以我有这个: 只是一个数组的数字例如然而没有给出正确的总数,但?我甚至放了一个超时延迟,看看这是否解决了问题。任何明显的还是我应该发布更多的代码?

  • 我猜这可能与从父级打开有关,但我有其他组件,它们内部的状态发生变化,所以我有点困惑,为什么这个组件不尊重它的新状态。 谢谢