爱编程的设计师 2022-08-28 22:48 采纳率: 94.4%
浏览 31
已结题

为什么第一点击按钮的打印结果是“bb”,第二次打印结果是“e”,应该是每次打印的结果都是“e”才对 这是为什么

我想要达到的结果
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        .home {
            margin: 100px auto;
            width: 500px;
            background-color: rgb(148, 92, 19);
        }

        .test {
            background-color: red;
        }

        img {
            width: 200px;
            height: 120px;
        }
    </style>
</head>

<body>
    <div class="home">
        <div class="test"></div>
    </div>
    <script type="text/javascript" src="react.development.js"></script>
    <script type="text/javascript" src="react-dom.development.js"></script>
    <script type="text/javascript" src="babel.min.js"></script>
    <script type="text/babel">
        class Hellow extends React.Component {
            constructor(props) {
                super(props)
                this.state = { ele: 'bb' }
            }
            getEle = (e) => {
                console.log(e);
                // this.setState({ ele: 'f' });
                // console.log(this.state.ele);
            }
            render() {
                return (
                    <div ref={this.getEle}>
                        <h3>nice day</h3>
                        <img src="one.jpg" alt=""></img><br></br>
                        <button onClick={this.addPicture}>add photo</button>
                    </div>
                )

            }
            addPicture = () => {
                this.setState({ ele: 'e' });
                console.log(this.state.ele);
            }
        }
        ReactDOM.render(<Hellow />, document.querySelector('.test'))
    </script>
</body>

</html>

  • 写回答

2条回答 默认 最新

  • 雾里桃花 2022-08-29 09:42
    关注

    setState是一个异步函数,类似于接口请求,它的第二个参数是一个回调函数,如果你需要在更新state之后做一些操作,在这个回调函数中就可以获取到最新的state值

    this.setState({ ele: 'e' }, (state) => {
      console.log(this.state.ele)
    });
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月12日
  • 已采纳回答 9月4日
  • 创建了问题 8月28日

悬赏问题

  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入