나는 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()하지만 ... 최선의 방법입니까?
나중에 동일한 튜토리얼에서 목록에 할 일을 추가하는 약간의 양식을 작성합니다. 자, 그들이 어떻게 입력을 받아들이는지 보러 가자.
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 개의 다른 참조와 함께 20 개의 변수를 사용해야합니까? 어떤 도움에 감사하다
은,이 예제는 당신이 더 같은 구성 요소를 연결 등의 반응-REDUX을하는 전형적인 일을,하기의 반응-REDUX 방법을 이해할 수 있도록 여기에 당신에게
나는 그것이 희박함이 아니라 반응의 문제라고 생각합니다. https://reactjs.org/docs/forms.html#controlled-components에서 잘 설명되어 있습니다. –