私はReact.jsの最初のビットを試していて、早すぎました...私は<div id="search"></div>
に検索フォームをレンダリングする以下のコードを持っています。しかし、検索ボックスに入力することは何もしません。React入力テキストフィールドに入力できません
おそらく、何かが小道具を通過して上下することがなくなり、これは一般的な問題のようです。しかし、私は困惑しています - 何が欠けているのか分かりません。あなたが入力フィールドに入力することはできませんのでvalue={whatever}
を使用
var SearchFacet = React.createClass({
handleChange: function() {
this.props.onUserInput(
this.refs.searchStringInput.value
)
},
render: function() {
return (
<div>
Search for:
<input
type="text"
value={this.props.searchString}
ref="searchStringInput"
onchange={this.handleChange} />
</div>
);
}
});
var SearchTool = React.createClass({
render: function() {
return (
<form>
<SearchFacet
searchString={this.props.searchString}
onUserInput={this.props.onUserInput}
/>
<button>Search</button>
</form>
);
}
});
var Searcher = React.createClass({
getInitialState: function() {
return {
searchString: ''
}
},
handleUserInput: function(searchString) {
this.setState({
searchString: searchString
})
},
render: function() {
return (
<div>
<SearchTool
searchString={this.state.searchString}
onUserInput={this.handleUserInput}
/>
</div>
);
}
});
ReactDOM.render(
<Searcher />,
document.getElementById('searcher')
);
(結局、私はSearchFacet*
の他のタイプがありますが、私はこの1つだけが動作して取得しようとしている。)
テキストフィールドを入力するときに 'this'を記録するようにしてください。 'this 'は' Searcher'コンポーネントではなくなっている可能性があります。 – FaureHu
ありがとうFaureHu - コードのどの時点で 'this'を記録していますか? 'Searcher.handleUserInput()'や 'SearchFacet.handleChange()'からログを記録しようとしても何もしません。 –
あなたは私の答えを似たような質問で見ることができます。私にはhttp://stackoverflow.com/questions/34713718/input-field-doesnt-receive-keyboard-events-when-rendering-with-value-property/36871399?noredirect=1#comment61310144_36871399 –