https://jsfiddle.net/q7yvmsa3/4/
class TwitterBox extends React.component {
constructor(props) {
super(props);
this.state = { enteredTextBoxvalue : '' };
}
// var textBoxValue = textbox.value();
// var totalCount = textBoxValue.count();
// if (totalCount > 140) {
// div.addCSS{ border: 1px solid red}
// }
render() {
return (<div>Hello {this.props.name}
<textarea value = "this.state.enteredTextBoxvalue">
there should be only 140 characters
</textarea>
</div>);
}
}
ReactDOM.render(
<Hello name="World" />,
document.getElementById('container')
);
答案 0 :(得分:2)
您的代码有三个错误。请参阅https://jsfiddle.net/q7yvmsa3/7/了解(种类)工作结果。
React.Component
Hello
,但您的组件名为TwitterBox
this.state.enteredTextBoxvalue
(将其作为字符串),但应在括号中引用。另外请注意:您需要在每次按键时更新 enteredTextBoxvalue 状态,以保持textarea同步。
答案 1 :(得分:2)
的变化:
1。 React.component
中的错字,应为React.Component
。
2。动态值必须在{}
内,但您将其定义为字符串:value = "this.state.enteredTextBoxvalue"
它应为value = {this.state.enteredTextBoxvalue}
3。您已将组件名称定义为TwitterBox
,但呈现Hello
:
ReactDOM.render(<Hello/>,....)
4. 您正在使用controlled component(意味着定义了textarea
的value属性),因此也要定义onChange
函数,并更新值其中的state
变量。
5。不要定义textarea
的子项,如果您想要一些默认值,则初始化state
值。
检查工作示例:
class TwitterBox extends React.Component {
constructor(props) {
super(props);
this.state = { enteredTextBoxvalue : '' };
this.change = this.change.bind(this);
}
change(e){
this.setState({enteredTextBoxvalue: e.target.value});
}
render() {
return (
<div>
Hello {this.props.name}
<textarea value={this.state.enteredTextBoxvalue} onChange={this.change}/>
</div>
)
}
}
ReactDOM.render(
<TwitterBox name='hello'/>,
document.getElementById('container')
);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id='container'/>
&#13;