javascript - PropTypes 形状被标记为需要

标签 javascript reactjs react-redux react-proptypes

所以我正在尝试向我的组件对象添加一个形状。该对象是从服务器加载的,因此从一开始就不存在。但是当我将形状添加到 Proptypes 时。它不断抛出错误,指出它被标记为必需,但事实并非如此。

shapeobjectOf 是否自动添加 isRequired 值?

TopicsList.propTypes = {
  topicsObject: PropTypes.shape(reportsTopicsObjectResultShape),
};

还有形状:

export const reportsTopicObject = PropTypes.shape({
 avg_rating_ord: PropTypes.number,
 cards_with_comments: PropTypes.number,
 cards_without_comments: PropTypes.number,
 number_of_questions: PropTypes.number,
 rating_count: PropTypes.number,
 scale_version_id: PropTypes.string,
 scale_id: PropTypes.string,
 last_answered_at: PropTypes.string,
 id: PropTypes.string,
 type: PropTypes.string,
 name: PropTypes.shape(translatedObjectSystem),
 description: PropTypes.shape(translatedObjectSystem)
});

export const reportsTopicsObjectResultShape = PropTypes.shape({
 topics_distribution: PropTypes.shape({
    general: PropTypes.number,
    groups: PropTypes.number,
    people: PropTypes.number
}),
 topic_list: PropTypes.objectOf(reportsTopicObject)
});

我仍然得到错误:

Failed prop type: The prop `topicsObject.isRequired` is marked as 
required in `TopicsList`, but its value is `undefined`.

确实在开头是 undefined 这没关系,但我不希望它是必需的。

最佳答案

默认情况下,shape 和 objectOf 都不会导致 prop 成为必需的。这是直接来自 react docs 的示例:

// An object with property values of a certain type
  optionalObjectOf: PropTypes.objectOf(PropTypes.number),

// An object taking on a particular shape
  optionalObjectWithShape: PropTypes.shape({
    color: PropTypes.string,
    fontSize: PropTypes.number
  }),

这是 an example如果您希望使用 shape 的显示不会使对象成为必需的(尽管最后使用 .isRequired 会产生警告),您可以尝试一下。

值得注意的一件事是您的错误消息看起来有点奇怪。通常错误消息如下所示:

"Warning: Failed prop type: The prop `foo` is marked as required in `App`, but its value is `undefined`.
in App"

prop 显示为 foo 而不是 foo.isRequired。你的似乎在说

prop `topicsObject.isRequired` 

所以它可能与形状导入/导出的方式有关。

关于javascript - PropTypes 形状被标记为需要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071941/

相关文章:

javascript - 在第二个函数 x2() 中,为什么仅在第二个函数中返回 var pp ?

javascript - 原型(prototype) addMethods 返回 "undefined"

javascript - 在js中替换包含数字的文本

javascript - react 路由器: Create 'Link to' paths from objects

coffeescript - 在 React 中链接两个输入字段

javascript - axios POST 解析为 undefined

javascript - 如何在使用已更新的依赖值分派(dispatch)操作后更新 api 调用

javascript - useSelector() 显示了 promise ,而不是来自商店的更新值

reactjs - 未捕获的 TypeError : _this2. props.selectBook 不是函数

Javascript 网格布局按钮