【发布时间】:2019-05-18 04:24:52
【问题描述】:
您好,我在调用子组件中的操作时遇到问题。
但是,我可以自己运行 CompanyForm 组件并且它会工作,但是当被视为子组件时,我会遇到错误:
未捕获的类型错误:this.props.createCompany 不是函数
公司.js
render() {
return (
<div>
<CompanyForm/>
</div>
);
}
CompanyForm.js
import { createCompany } from "../../actions/companyAction";
export class CompanyForm extends Component {
constructor(props) {
super(props);
this.state = {
companyName: '',
street1: '',
street2: '',
city: '',
state: '',
zipcode: ''
};
this.handleSubmit = this.handleSubmit.bind(this);
}
handleSubmit(event) {
event.preventDefault();
const company = {
...
};
console.log(company);
this.props.createCompany(company)
}
}
export default connect(null, { createCompany })(CompanyForm);
companyActions.js
export const createCompany = (companyData) => dispatch => {
console.log('CREATE_COMPANY: ', companyData);
fetch('api/Company/Create', {
...
)};
【问题讨论】:
-
@Kabbany:哎呀,你是对的。我在脑海中切换了方法/道具。
-
我认为您的文件名中有错字。是
companyActions.js还是companyAction.js? -
@Kabbany 该文件绝对命名为 companyAction.js。这真是一个奇怪的错误......另外,如果我启用了
CompanyForm.propTypes = { createCompany: PropTypes.func.isRequired };然后我在<CompanyForm />中收到警告,说明does not have required attribute createCompany -
@Kabbany 好的...所以我想出了如何解决我的问题,但我认为这不是正确的方法...?
<CompanyForm createCompany={this.props.createCompany}/>在我的公司组件中,我调用了export default connect(null, {createCompany})(Companies);有没有更好的方法来做到这一点?好像有点多余 -
你能提供你如何调用
handleSubmit的代码吗?
标签: javascript reactjs redux components