javascript - 失败的 Prop 类型 Prop 被标记为必需但其值为 `undefined`

标签 javascript reactjs react-redux

我正在使用 React v4,我试图在页面“treinamentos”中列出一个数组,但在加载页面时出现错误:

Failed prop type: The prop treinamentos is marked as required in Treinamentos, but its value is undefined.

我在这里错过了什么?是因为我使用的版本吗?

enter image description here

治疗:

import React from 'react';
import TreinamentosList from './TreinamentosList';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';

class Treinamentos extends React.Component {
  render() {
    return (
      <div>
        Treinamentos
        <TreinamentosList treinamentos={this.props.treinamentos} />
      </div>
    );
  }
}

Treinamentos.propTypes = {
  treinamentos: PropTypes.array.isRequired
}

function mapStateToProps(state) {
  return {
    treinamentos: state.treinamentos
  }
}

export default connect(mapStateToProps)(Treinamentos);

TreinamentosList:

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

export default function TreinamentosList({ treinamentos }) {
  const emptyMessage = (
    <p>Adicione um treinamento</p>
  );

  const treinamentosList = (
    <p>treinamentos list</p>
  );

  return (
    <div>
      {treinamentos.length === 0 ? emptyMessage : treinamentosList}
    </div>
  );
}

TreinamentosList.propTypes = {
  treinamentos: PropTypes.array.isRequired
}

AppRouter:

import React from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import Greetings from './components/Greetings';
import SignUp from './components/singup/SignUp';
import NoMatch from './components/NoMatch';
import Treinamentos from './components/Treinamentos';
import NavigationBar from './components/NavigationBar';

const AppRouter = () => (
  <Router>
    <div className="container">
      <NavigationBar />
      <Switch>
        <Route path="/" component={Greetings} exact={true}/>
        <Route path="/signup" component={SignUp}/>
        <Route path="/treinamentos" component={Treinamentos}/>
        <Route component={NoMatch}/>
      </Switch>
    </div>
  </Router>
);

export default AppRouter;

最佳答案

当您从 treinamentos reducer 请求状态时,您肯定会收到一个空对象,您应该检查您的 reducer,将 treinamentos 作为一个空数组作为初始状态返回(或者您的业务逻辑需要的任何内容) .

关于javascript - 失败的 Prop 类型 Prop 被标记为必需但其值为 `undefined`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49802165/

相关文章:

javascript - Chart.JS 未正确格式化 Y-Axis-1

javascript - Vuejs - 检查图像 url 是否有效或损坏

reactjs - 在 Monaco Editor 中使用热键?

reactjs - react 内的路由抛出 "No duplicate props allowed "

javascript - 将 Hooks 与 Redux 一起使用——不好的做法?

reactjs - JestJS -> 不变违规 : Could not find "store" in either the context or props of "Connect(Portfolio)"

javascript - WordPress 定制器链接自 WP5.8 更新后停止工作

javascript - 动画左侧的 JQuery 轮播延迟

javascript - Redux 会多次调度 action,即使它只在一个函数中调度一次

react-native - 如何将 props 从组件传递到另一个组件