为了账号安全,请及时绑定邮箱和手机立即绑定

添加了新的replay之后,怎样把input里的内容清空?

添加了新的replay之后,怎样把input里的内容清空?

正在回答

4 回答

你写的很认真。点赞! 有几点可以改进,1 删除的回调函数也许不需要传入 e 这个event object,直接把 index 传入岂不是更好? 2 在 deleteComment 方法中,你选用了 splice 来删除,splice 是个 mutable 的方法,当然也没问题,也可以试试用 数组上面的 filter 方法,这个函数是 immtuable 的,而且更好理解。3 既然 clickHandler 里面只有一行,是不是可以试试直接用箭头函数作为回调? 例如 onClick={(e)=> { .... }}

1 回复 有任何疑惑可以回复我~
#1

幕布斯3313121

你好,老师我想问一下这个filter的怎么写?
2019-08-26 回复 有任何疑惑可以回复我~
#2

幕布斯3313121

this.state.comments.filter((num, index) => console.log(num, this.state.comments[index]))
2019-08-26 回复 有任何疑惑可以回复我~

清空操作可以试试在提交的时候进行,也就是在handleSubmit()方法中,添加

this.textInput.value = ''


0 回复 有任何疑惑可以回复我~

emmmm......我觉得不用这样的,加一个函数

componentDidUpdate(prevProps, prevState, snapshot) {
    document.getElementById('comment').value = ""
}


0 回复 有任何疑惑可以回复我~
#1

qq_长流_0

对了 input 上面要给个id="comment"
2018-12-04 回复 有任何疑惑可以回复我~

刚问完发现是老师留的作业……那我就自问自答一下吧:

在CommentBox.js里的handleSubmit里加上一句: 

this.textInput.value=""

即可


加删除按钮比较麻烦点,CommentList.js文件中,把ul标签修改如下:

<ul className="list-group mb-3">
{    
    this.props.comments.map((comment, index) =>        
        <li key={index} className="list-group-item">{comment}
        <button
            type="button"
            className="btn btn-danger btn-sm"
            data-index={index}
            onClick={this.clickHandler}
         >
         删除
         </button>
         </li>
     )
}
</ul>

同时加入clickHandler方法

clickHandler(e) {
    this.props.onDeleteComment(e)
}

最后,在App.js里,首先把CommentList标签加入onDeleteComment属性

<CommentList comments={comments} onDeleteComment={this.deleteComment} />

再加入deleteComment方法:

deleteComment(e) {
    const index = e.target.getAttribute("data-index");
    let newComments = this.state.comments
    newComments.splice(index, 1)
    this.setState({
        comments: newComments
    })
}

我在删除按钮上加了一个data-index属性用来传递comment的index,不确定好不好,也不知道有没有更好的方法。欢迎大家讨论,也请老师指点。

1 回复 有任何疑惑可以回复我~
#1

pardon110

一个箭头函数就可搞定的事,非要写那么多
2018-11-19 回复 有任何疑惑可以回复我~
#2

慕运维6548256

你好,我尝试将子组件中的handleClick方法传入参数由事件e改为index,但是直接改成index后index是[object Object]对象,仍然只能用getattribute方法传递index
2019-11-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

添加了新的replay之后,怎样把input里的内容清空?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信