Redux操作changePictogramsKeyword未被解雇。Redux操作未被解雇
这是我定义我的动作和减速机(终极版/模块/ keyword.js)文件:
export const CHANGE_PICTOGRAMS_KEYWORD = 'CHANGE_PICTOGRAMS_KEYWORD'
export function changePictogramsKeyword (keyword) {
return {
type: CHANGE_PICTOGRAMS_KEYWORD,
keyword
}
}
// Updates error message to notify about the failed fetches.
export default function pictogramsKeyword (state = '', action) {
switch (action.type) {
case CHANGE_PICTOGRAMS_KEYWORD:
return action.keyword
default:
return state
}
}
我的根减速机:
import { combineReducers } from 'redux'
import { routerReducer as router } from 'react-router-redux'
import locale from './modules/locale'
import errorMessage from './modules/error'
import pictogramsKeyword from './modules/keyword'
export default combineReducers({
locale,
router,
pictogramsKeyword,
errorMessage
})
与我可以检查devTools
所以我的初始化状态是我从rootReducer预期:
locale:"en"
router:{} 1 key
pictogramsKeyword:""
errorMessage:null
这是视图的代码,我连接到Redux商店。组件SearchBox负责发起动作changePictogramsKeyword:
import React, {Component, PropTypes} from 'react'
import SearchBox from 'components/SearchBox.js'
import { connect } from 'react-redux'
import { changePictogramsKeyword } from 'redux/modules/keyword'
class SearchPictogramsView extends Component {
handleDismissClick (e) {
this.props.resetErrorMessage()
e.preventDefault()
}
render() {
const { children, inputValue } = this.props
return (
<div>
<SearchBox value={inputValue} onChange={changePictogramsKeyword} />
{children}
</div>
)
}
}
SearchPictogramsView.propTypes = {
inputValue: PropTypes.string.isRequired,
children: PropTypes.node
}
function mapStateToProps (state, ownProps) {
return {
errorMessage: state.errorMessage,
inputValue: state.pictogramsKeyword
}
}
export default connect(mapStateToProps, {
resetErrorMessage, changePictogramsKeyword
})(SearchPictogramsView)
这是SearchBox组件的代码。 AutoComplete是一个材料UI组件。 onUpdateInput方法得到射击每次我按一个键,但是changePictogramsKeyword不被解雇(我什么也看不到,通过开发者工具)
import React, {Component, PropTypes} from 'react'
import AutoComplete from 'material-ui/lib/auto-complete'
import RaisedButton from 'material-ui/lib/raised-button'
class SearchBox extends Component {
constructor (props) {
super(props)
this.handleUpdateInput = this.handleUpdateInput.bind(this)
}
handleUpdateInput = (t) => {
console.log(t)
this.props.onChange(t)
}
render() {
return (
<div>
<AutoComplete onUpdateInput={this.handleUpdateInput} searchText={this.props.value} />
</div>
)
}
}
SearchBox.propTypes = {
value: PropTypes.string.isRequired,
onChange: PropTypes.func.isRequired
}
export default SearchBox
您的代码无法解决问题。我认为这也是我写的。我在连接方法中的第二个参数是一个对象...,并从文档:如果一个对象被传递,其中的每个函数将被认为是一个Redux行动的创造者。一个具有相同函数名称的对象,但每个动作创建者都被包装成一个调度调用,以便它们可以被直接调用,将被合并到组件的道具中 – user2670996
URL:https://github.com/reactjs/react-redux/斑点/主/文档/ API。md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options – user2670996
TIL,我的不好。我不知道这是否奏效,很高兴你找到了解决方案! – mxstbr