reactjs - 为什么 props 没有注入到组件中?
问题描述
在这里反应/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)
“无状态”组件 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
解决方案
您不必使用 this.props.addTodo,只需简单地使用它即可<button onClick={addTodo}>add todo</button>
。
你已经addTodo
通过解构道具直接采取了。
推荐阅读
- github - 包含的文件是符号链接或不存在 - Github Pages
- sql - 如果 spark sql 中没有公共列值,我们如何连接两个表
- docx4j - 没有相应 MERGEFIELD 的 DataFields 的行为
- java - 如何使用java运行junit测试
- python - sqlite3.OperationalError:无法识别的令牌:“:”
- c++ - 在 C++ 中继承特征
- sh - 如何使用 shell 脚本和匹配表达式替换文件中的子字符串?
- twilio - 如何使用 Twilio Studio 从其余 API 中的录制语音邮件中访问 url
- ruby-on-rails - 当它们具有不同的字节表示时,如何在正则表达式中匹配变音符号(äöü)?
- java - Openssl 加密 [Kotlin] [Android] (PHP)