使用输入更新 redux 状态
Update redux state with an input
如何从文本输入更新 redux 的状态?
我正在尝试使用文本输入做一个非常简单的 "Hello World"。当有人输入文本输入时,它应该更新我商店的 "searchTerm" 值。
我想不通这些事情:
1. 如何获取输入值并将其传递给 "onChange" 处理程序?
2. "search" 动作似乎调用正确,但我的reducer 函数从未使用过(没有console.log)。
SearchForm.js(组件)
import React, {Component, PropTypes} from 'react';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import {search} from 'redux/modules/search-term';
@connect(
null,
dispatch => bindActionCreators({ search }, dispatch)
)
export default class SearchForm extends Component {
static propTypes = {
search: PropTypes.func.isRequired,
}
render() {
return (
<input type="text" placeholder="Search" onChange={search} />
);
}
}
search-term.js (action & reducer)
const SEARCH = 'redux-example/repo-filter/SEARCH';
const initialState = {
searchTerm: null
};
export default function reducer(state = initialState, action = {}) {
console.log("reducing");
switch (action.type) {
case SEARCH:
return {
searchTerm: action.term
};
default:
return state;
}
}
export function search(term) {
return {
type: SEARCH,
term
};
}
reducer.js
import { combineReducers } from 'redux';
import multireducer from 'multireducer';
import { routerStateReducer } from 'redux-router';
import search from './search-term';
export default combineReducers({
router: routerStateReducer,
search
});
将动作创建者绑定到更改事件时,您应该使用 this.props.search
:
<input type="text" placeholder="Search" onChange={(event) => this.props.search(event.target.value)} />
如何从文本输入更新 redux 的状态?
我正在尝试使用文本输入做一个非常简单的 "Hello World"。当有人输入文本输入时,它应该更新我商店的 "searchTerm" 值。
我想不通这些事情: 1. 如何获取输入值并将其传递给 "onChange" 处理程序? 2. "search" 动作似乎调用正确,但我的reducer 函数从未使用过(没有console.log)。
SearchForm.js(组件)
import React, {Component, PropTypes} from 'react';
import {bindActionCreators} from 'redux';
import {connect} from 'react-redux';
import {search} from 'redux/modules/search-term';
@connect(
null,
dispatch => bindActionCreators({ search }, dispatch)
)
export default class SearchForm extends Component {
static propTypes = {
search: PropTypes.func.isRequired,
}
render() {
return (
<input type="text" placeholder="Search" onChange={search} />
);
}
}
search-term.js (action & reducer)
const SEARCH = 'redux-example/repo-filter/SEARCH';
const initialState = {
searchTerm: null
};
export default function reducer(state = initialState, action = {}) {
console.log("reducing");
switch (action.type) {
case SEARCH:
return {
searchTerm: action.term
};
default:
return state;
}
}
export function search(term) {
return {
type: SEARCH,
term
};
}
reducer.js
import { combineReducers } from 'redux';
import multireducer from 'multireducer';
import { routerStateReducer } from 'redux-router';
import search from './search-term';
export default combineReducers({
router: routerStateReducer,
search
});
将动作创建者绑定到更改事件时,您应该使用 this.props.search
:
<input type="text" placeholder="Search" onChange={(event) => this.props.search(event.target.value)} />