首页 > 其他 > 详细

REACT INPUT ONCHANGE事件不能立刻拿到值,只能拿到上次输入的值

时间:2021-04-30 15:17:00      阅读:15      评论:0      收藏:0      [点我收藏+]

因为react是异步更新,state 状态更新需要一段时间。
而打印是同步操作,所以在打印时会发现打印的是之前的内容。
如果想打印显示的为现在内容可以使用 Promise 来封装要操作的函数

<!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>
</head>
<body>
    <div id="test"></div>
    <!-- react 核心库 -->
    <script src="../js/react.development.js"></script>
    <!-- react DOM 操作库 -->
    <script src="../js/react-dom.development.js"></script>
    <script src="../js/babel.min.js"></script>
    <script type="text/babel">
        class Test extends React.Component{
            state = {
                msg: ‘e‘
            }
            // 将打印操作转为异步
            changeMsg = (e) => {
                new Promise((resolve, reject) => {
                    this.setState({
                    msg: e.target.value
                })
                resolve(e.target.value)
                })
                .then((res) => {
                    console.log(res)
                })
                
            }
            render () {
                return (
                    <div>
                        <input type="text" onChange={this.changeMsg} value={this.state.msg}/>
                    </div>
                )
            }
        }
        ReactDOM.render(<Test/>, document.getElementById(‘test‘))
    </script>
</body>
</html>

REACT INPUT ONCHANGE事件不能立刻拿到值,只能拿到上次输入的值

原文:https://www.cnblogs.com/tonedog/p/14721566.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!