初次接触React,这里为什么会静默失败呢

var WrapBox = React.createClass({
    getInitialState:function(){
        return{
            data:[]
        }
    },
    render:function(){
        return(
            <div>
                <InputandButtom data={this.state.data}/>
                <ListDisplay data={this.state.data} />
            </div>
        )
    }
})
var InputandButtom = React.createClass({
    addData:function(){
        var addText = this.refs.inputext.innerText
        console.log(addText)
        var addIndate = this.props.data
        addIndate.push({
            text:addText,
            key:Date.now()
        })
        this.setState({
            data:addIndate
        })
        
    },
    componentDidMount:function(){
        console.log(this.props.data)
    },
    render:function(){
        return(
            <form>
                <input type="text" ref="inputext" />
                <button onClick={this.addData}>save</button>
            </form>
        )
    }
})
var ListDisplay = React.createClass({
    render:function(){
        var addData = this.props.data
        function createList(data){
            return <li key={data.key}>{data.text}</li>
        }
        var dataListdone = addData.map(createList)
        return (
            <ul>
                {dataListdone}
            </ul>
        )
    }
})
ReactDOM.render(
    <WrapBox />,
    document.getElementById('example')
)

触发点击事件后,页面重绘,控制台也不报错,但是也输出不了console,这样怎么办啊,,找不到哪里出问题了呀

阅读 2.6k
3 个回答

事件this 指向对不对
onClick={this.addData.bind(this)}
试试

你这个逻辑有错误的。状态应该回传给父组件去处理,才能刷新父组件的 render() 方法。

<form>
   <input type="text" ref="inputext" />
   <button onClick={this.addData}>save</button>
</form>

其实是有输出的,因为是 form ,点击 button 后会重新加载页面,所有在控制台是看不到的

不信你把 form 换成 div, 就可以看见了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题