按钮在React

时间:2016-06-03 17:28:22

标签: javascript reactjs

我无法弄清楚为什么我的handleDelete功能没有运行。当我点击“删除”时什么都没发生。

在开发工具中,我看到删除按钮的值是正确的,但onClick的属性根本没有显示。

var MainContainer = React.createClass({
    getInitialState: function(){
      return {
        name: 'JK_MNO',
        friends: [], //friends is items
        text: ''
      }
    },
    handleChange: function(e){
      //like the onChange function
        this.setState({
            text: e.target.value
        });
    },
    handleSubmit: function(e){
      e.preventDefault();
      if(this.state.text !== '') {
        var nextfriend = this.state.friends.concat([{
          text: this.state.text, id: Date.now()
        }]);
        var nextText = '';
        this.setState({
          friends: nextfriend, text: nextText
        });

      }
    },
    handleDelete: function(e){
      console.log(this.state.friends);
      this.friends.splice (this.props.friend.id);
      this.setState({
        friends: friends
      });
    },
    render: function(){
      return (
        <div>
          <h3> Name: {this.state.name} </h3>
          <ShowList friends={this.state.friends} />
          <form onSubmit={this.handleSubmit} >
              Enter Friends: <input className="friendInput" onChange={this.handleChange} value={this.state.text} />
            </form> 
        </div>
      );
    }
});

var ShowList = React.createClass({
  render: function() {
    var createFriend = function(friend) {
      return (
        <li key={friend.id}>{friend.text} <button onClick={this.props.handleDelete} value={friend.id}>Delete</button> </li>
      );
    };
    return <ul>{this.props.friends.map(createFriend.bind(this))}</ul>;
  }
});

ReactDOM.render(<MainContainer />, document.getElementById('container'));

https://jsfiddle.net/USERALPHA32/bdc9trux/

1 个答案:

答案 0 :(得分:1)

非常接近!您只需将删除功能传递给ShowList作为道具:

电流:

<ShowList friends={this.state.friends} />

建议:

<ShowList friends={this.state.friends} handleDelete={this.handleDelete} />