为什么道具不注入组件?

时间:2018-08-24 11:50:24

标签: reactjs react-redux

在这里

react / redux新手。尝试构建待办事项应用程序并具有如下容器组件:

import React, { Component } from 'react'
import PropTypes from 'prop-types'
import { connect } from 'react-redux'
import Input from '../components/InputText'
import addTodo from '../actions/addTodoAction'

export class InputText extends Component {
  static propTypes = {
    prop: PropTypes
  }
}

export default connect(null, {addTodo})(Input)

“无状态”组件输入看起来像这样:

import React from 'react'
import PropTypes from 'prop-types'

const InputText = ({addTodo}) => {
    return (
        <div>
            <input type='text'></input>
            <button onClick={this.props.addTodo}>add todo</button>
        </div>
    )
}

//question :define proptype for action?
InputText.propTypes = {
    addTodo: PropTypes.func.isRequired
}

export default InputText

这是动作创建者:

const addTodo = (param) => ({
  type: 'ADD_TODO',
  payload: param.text
})

export default addTodo;

运行应用程序时出现此错误:

  

TypeError:无法读取未定义的属性'addTodo'

看起来道具没有被传递。我在做什么错?链接到 githubrepo

1 个答案:

答案 0 :(得分:1)

您不必使用this.props.addTodo,只需使用<button onClick={addTodo}>add todo</button>

您通过破坏道具直接获得了addTodo