Почему реквизит не вводится в компонент? - PullRequest
0 голосов
/ 24 августа 2018

реагирует / редукция новичка здесь. Попытка создать приложение todo и создать контейнерный компонент, подобный этому:

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 голосов
/ 24 августа 2018

Вам не нужно использовать this.props.addTodo, просто используйте его просто <button onClick={addTodo}>add todo</button>.

Вы непосредственно взяли addTodo, уничтожив реквизиты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...