将组件添加到另一个组件React

时间:2016-08-04 10:45:45

标签: javascript html reactjs

您好我正在尝试添加一个名为ListItem的新组件,我将输入的文本输入到输入中,然后按"添加"按钮。

    var Input = React.createClass({

    addListItem: function(){
    console.log(this.refs.input.value);
    <ListItem>{this.refs.input.value}</ListItem>

    },
        render: function(){
            return (
                <div>
                  <input ref="input" type="text"/>
                  <button onClick={this.addListItem}>Add</button>
                </div>
            );
        }
    });

    var ListItem = React.createClass({

        render: function(){
            return (
                <li class="listItem">
                  {this.props.value}
                </li>
            );          
        }
    });

ReactDOM.render(<Input/>, container);

问题是组件没有被创建,我还试图在li元素中添加一些文本,当我认为道具没有通过时,但这不是问题。

我在这里不理解什么?

2 个答案:

答案 0 :(得分:0)

维护项状态并使用它来呈现ListItem:

var Input = React.createClass({
getInitialState: function(){
    return {
        items: []
    };
},
addListItem: function(){
    var items = this.state.items;
    items.push(this.refs.input.value);
    this.setState({
      items: items
    });
},
render: function(){
    return (
        <div>
            <input ref="input" type="text"/>
            <button onClick={this.addListItem}>Add</button>
            {this.getItems()}
        </div>
    );
},
getItems: function(){
    return this.state.items.map(function (i) {
        return <ListItem>{i}</ListItem>

    });
 }
});

答案 1 :(得分:0)

 var Input = React.createClass({
getInitialState(){
    return {
        list :[]
    }
},
addListItem: function(){
    let array = this.state.list;
     array.push({value:this.refs.input.value});
    this.setState({list: array});

},
render: function(){
    let list = this.state.list;
    console.log(list)
    let item = list&&list.map((d,i)=>{
            return (
                <ListItem key={i}>{d.value}</ListItem>
            );
        });
    return (
        <div>
            <input ref="input" type="text"/>
            <button onClick={this.addListItem}>Add</button>
            <ul>
                {item}
            </ul>
        </div>
    );
}
});

var ListItem = React.createClass({

render: function(){
    return (
        <li>
            {this.props.children}
        </li>
    );
}
});