私はusage with React Reduxチュートリアルに従っています。私が実際に得られないものは、ユーザー入力を取得する方法です。React/Redux、ユーザ入力の取得方法
彼らは、そのmapDispatchToProps
const mapDispatchToProps = (dispatch, ownProps) => {
return {
onClick:() => {
dispatch(setVisibilityFilter(ownProps.filter))
}
}
}
あるので、それが接続されているプレゼンテーションのコンポーネントにそのownProps.filterを注入FilterLinkコンテナを構築。このコンテナがどのように構築されているかを確認すると、
const Footer =() => (
<p>
Show:{" "}
<FilterLink filter="SHOW_ALL">All</FilterLink>{", "}
<FilterLink filter="SHOW_ACTIVE">Active</FilterLink>{", "}
<FilterLink filter="SHOW_COMPLETED">Completed</FilterLink>
</p>
)
[フィルタ]プロパティがあります。それは明らかです。
今、私は同じ例でテキストフィルタを構築したいと思います。だから、最初にここに私のプレゼンテーションコンポーネント
const TodoSearch = ({onSubmit}) => (
<form
onSubmit={e => {
e.preventDefault()
onSubmit()
}}
>
<input placeholder="Text search" />
<input type="submit" value="Go" />
</form>
)
あるしかし、私はコンテナを書くために来るとき、私は、ユーザー入力を取得する方法がわからない
const mapDispatchToProps = (dispatch) => {
return {
onSubmit:() => {
dispatch(setTextSearch(????))
}
}
}
それは私はjQueryの$で行うと何か(#テキストです).val()しかし...それは最善の方法ですか?
その後、同じチュートリアルで、リストにToDoを追加するための小さなフォームを作成します。さて、彼らがどのように入力を捕まえるのか見てみましょう。
let AddTodo = ({ dispatch }) => {
let input
return (
<div>
<form onSubmit={e => {
e.preventDefault()
if (!input.value.trim()) {
return
}
dispatch(addTodo(input.value))
input.value = ''
}}>
<input ref={node => {
input = node
}} />
<button type="submit">
Add Todo
</button>
</form>
</div>
)
}
ここで魔法はどこですか?彼らはそのrefトリックで "入力" variabileに価値を注入しましたか?あれは正しいですか? 20の入力フィールドがある場合、20の異なるREFで20個の変数を使用する必要がありますか?
すべてのヘルプは感謝している、この例では、より良い、そのようなコンポーネントを接続すると、-Reduxのを反応させる一般的な物事の反応-Reduxの方法を理解させるためにここにいるあなたに
私はそれが還元の問題ではなく、還元すると信じています。 https://reactjs.org/docs/forms.html#controlled-componentsで詳しく説明しています。 –