【问题标题】:Getting Warning: Failed propType: Invalid prop of type `array` expected `object` in React收到警告:propType 失败:React 中类型为 `array` 预期为 `object` 的无效 prop
【发布时间】:2020-04-16 09:15:49
【问题描述】:

我目前在控制台中收到此警告

警告:道具类型失败:提供给 myComparray 类型的无效道具 dataSet.headings,应为 object

我有一个变量data

let data = {
  headings: ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
}

并在反应渲染函数中有这个

<MyComp dataSet={data}></MyComp>

MyComp 组件中我有这个propTypes 声明

MyComp.propTypes = {
  dataSet: PropTypes.objectOf(
    PropTypes.shape({
      headings: PropTypes.arrayOf(
        PropTypes.string
      )
    })
  )
};

我不确定我在这里做错了什么。有人能解释一下吗?

在此感谢您

【问题讨论】:

    标签: reactjs react-proptypes


    【解决方案1】:

    您的数据集实际上比您的 propTypes 定义简单得多。

    那里不需要PropTypes.objectof

    相反,这样做:

    MyComp.propTypes = {
      dataSet: PropTypes.shape({
        headings: PropTypes.arrayOf(PropTypes.string)
      })
    };
    

    【讨论】:

    • 这行得通!我一定是想多了。谢谢!
    • 不过,您的思路非常正确 :)。祝一切顺利!快乐编码:D
    • 嗨,巴里!我没有声明 proptypes ,但问题是 on 。这就是我正在做的事情 (jsfiddle.net/swjm4qvf) - 它对 android 有帮助,但对 ios 没有帮助 - 在这种情况下我能做什么?
    【解决方案2】:

    objectOf是表示一个具有指定类型的属性值的对象,即所有字符串或数字。

    但是,您的数据只是一个具有一个属性的对象,headings,其值是一个字符串数组。

    MyComp.propTypes = {
      dataSet: PropTypes.shape({
        headings: PropTypes.arrayOf(
          PropTypes.string
        )
      })
    };
    

    【讨论】:

      【解决方案3】:

      在 tabs 元素中传递 props 如下代码所示(renderTabBar)

      const Health_record = (props) => {
       return (
                <Tabs renderTabBar={renderTabBar} >
      
                    <Tab heading="tab1">
                  
                    </Tab>
                      <Tab heading="tab1">
      
                    </Tab>
                <Tabs>
            )    
      }
      
      const renderTabBar = (props) => {
          props.tabStyle = Object.create(props.tabStyle);
          return <ScrollableTab />;
      };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-23
        • 2016-03-01
        • 1970-01-01
        • 2021-09-04
        • 2019-03-31
        • 2020-06-30
        • 2019-06-14
        • 2020-07-18
        相关资源
        最近更新 更多