2017-02-25 130 views
0

output look like this当我单击更改文本按钮时,它应该用该值替换文本(TodoApplication),如果它是空值(应该替换空标题),则此代码中的值不会更改!任何人都可以编辑代码来获得解决方案!更改onclick在react-js中的值

var TodoApp = React.createClass({ 
 
    getInitialState: function() { 
 
return {items: []}; 
 
    }, 
 
    updateItems: function(newItem) { 
 
var allItems = this.state.items.concat([newItem]); 
 
this.setState({items: allItems}); 
 
    }, 
 
    render: function() { 
 
return (
 
    <div> 
 
    <TodoBanner/> 
 
    <TodoList items={this.state.items}/> 
 

 
    <TodoForm onFormSubmit={this.updateItems}/> 
 
    </div> 
 
); 
 
    } 
 
}); 
 

 
var TodoBanner = React.createClass({ 
 
    render: function() { 
 
return (
 
    <div className="container"> 
 
    <h3>TODO Application</h3> 
 
    </div> 
 
); 
 
    } 
 
}); 
 

 
var TodoList = React.createClass({ 
 
    render: function() { 
 
var createItem = function(itemText) { 
 
    return (
 
    <TodoListItem>{itemText} 
 
    </TodoListItem> 
 
); 
 
}; 
 
return <ul>{this.props.items.map(createItem)}</ul>; 
 
    } 
 
}); 
 

 
var TodoListItem = React.createClass({ 
 
    render: function() { 
 
return (
 
    <li>{this.props.children}</li> 
 
); 
 
    } 
 
}); 
 

 
var TodoForm = React.createClass({ 
 
    getInitialState: function() { 
 
return {item: ''}; 
 
    }, 
 
    handleSubmit: function(e) { 
 
e.preventDefault(); 
 
this.props.onFormSubmit(this.state.item); 
 
this.setState({item: ''}); 
 
React.findDOMNode(this.refs.item).focus(); 
 
return; 
 
    }, 
 
    onChange: function(e) { 
 
this.setState({item: e.target.value}); 
 
    }, 
 
    render: function() { 
 
return (
 
    <div className="container"> 
 
    <form onSubmit={this.handleSubmit}> 
 
     <input type='text' ref='item' onChange={this.onChange} value={this.state.item}/> 
 
     &nbsp; 
 
     <input type='submit' value='Add' className="btn btn-success"/><br/> 
 
     <input type='text' ref='item' onChange={this.onChange} value={this.state.item}/> 
 
     &nbsp; 
 
     <input type='submit' value='Change Text' className="btn btn-success"/> 
 
    </form> 
 
    </div> 
 
); 
 
    } 
 
}); 
 

 
ReactDOM.render(
 
    <TodoApp/>, document.getElementById('todo')); 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.js"></script> 
 

 
<div id="todo" />

+1

请正确解释您的问题。 –

+0

好吧!其实我想改变todobanner函数()中的文本与第二个输入框的值作为从用户点击第二个按钮在渲染函数()帮助我!@RIYAJKHAN – gkr

+0

@gkraj看到我的答案 –

回答

0

我怕我没有得到你的意思。你的意思是这样吗?

https://jsfiddle.net/alfrcr/upzqf067/1/

如果是这样,为了改变“的Todo应用程序”的文字,你应该发送的形式状态,上部部件。

因此TodoBanner可以作为props访问“表单状态”。 (请参阅示例代码)