reactjs - mapDispatchToProps 不起作用。 Prop 为空(错误 : redux action is not a function)

标签 reactjs redux react-redux

我收到此错误:this.props.postBooks 不是函数。

我有一个操作 - postBooks - 我正在尝试通过 props 发送它。

这是我的组件:

"use strict"

import React from 'react'
import {Well,Panel,FormControl,FormGroup,ControlLabel,Button} from 'react-bootstrap'
import {connect} from 'react-redux'
import {bindActionCreators} from 'redux'
import {postBooks} from '../../actions/booksActions'
import {findDOMNode} from 'react-dom'

export class BooksForm extends React.Component{

    handleSubmit(){
        const book = [{
            title: findDOMNode(this.refs.title).value,
            description: findDOMNode(this.refs.description).value,
            price: findDOMNode(this.refs.price).value
        }]
        this.props.postBooks(book)
    }
    render(){

        return(
            <Well>
                <Panel>
                    <FormGroup    controlId='title'>
                        <ControlLabel> Title </ControlLabel>
                        <FormControl    
                            type='text'
                            placeholder='Enter Title'
                            ref='title' />
                    </FormGroup>

                    <FormGroup    controlId='description'>
                        <ControlLabel> Enter Description </ControlLabel>
                        <FormControl    
                            type='text'
                            placeholder='Enter Description'
                            ref='description' />
                    </FormGroup>

                    <FormGroup    controlId='price'>
                        <ControlLabel> Enter Price </ControlLabel>
                        <FormControl    
                            type='text'
                            placeholder='Enter Price'
                            ref='price' />
                    </FormGroup>
                    <Button 
                    onClick={this.handleSubmit.bind(this)}
                    bsStyle='primary'> Enter New Book </Button>

                </Panel>
            </Well>
            )
    }

}

function mapDispatchToProps(dispatch){
    return bindActionCreators({postBooks},dispatch)
}
export default connect(null,mapDispatchToProps)(BooksForm);

似乎调度没有按预期映射到 Prop ,因为在控制台记录 Prop 时, Prop 是空的。任何帮助表示赞赏。提前致谢

编辑:添加操作

 "use strict"
// POST A BOOK
export function postBooks(book){
    return {
        type:"POST_BOOK",
        payload: book
    }
}
// DELETE A BOOK
export function deleteBooks(id){
    return {
        type:"DELETE_BOOK",
        payload: id
    }
}
//UPDATE BOOK
export function updateBooks(book){
    return {
        type:"UPDATE_BOOK",
        payload: book
    }
}

//Retrieve all books as if using API

export function getBooks(){
    return{
        type:'GET_BOOKS'
    }
}

最佳答案

想通了。

所以我在顶部导出组件并在下面导出默认值。

注意到 webpack 给出错误“导入和导出可能只出现在顶层”。继续删除顶部导出,现在按预期工作。

关于reactjs - mapDispatchToProps 不起作用。 Prop 为空(错误 : redux action is not a function),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44865904/

相关文章:

reactjs - 如何在一个组件中定义属性并传递给reactJs中的其他组件?

reactjs - 如何使用 Spring Security 允许访问特定的 React Hash 路由?

javascript - 如何将三元实现为点击处理程序

reactjs - Redux 在 React 中添加了另一个数组中的对象数组

javascript - ECMA 6、React Native 和 Redux : what does this syntactic sugar mean?

javascript - 当 combineReducer 传入时,React-Redux createStore 抛出 "Error: Expected the reducer to be a function"

javascript - 为什么 React 不能正确更新 dom?

javascript - 使用 promise 的 redux 最佳实践

javascript - Redux Action 中的轮询

reactjs - 失败的 Prop 类型 : Invalid prop of type `function` supplied expected a single ReactElement