我有一个无状态的react组件,看起来像这样:
import React from 'react';
import PropTypes from 'prop-types';
import Goal from './Goal'
import {List} from 'material-ui/List';
import {PropTypes as MobxPropTypes} from 'mobx-react';
const propTypes = {
goals: MobxPropTypes.ObservableArray,
onClick: PropTypes.function
};
const GoalsList = ({goals, onClick}) =>(
<List>
{goals.map((goal) => (
<Goal
key={goal.name}
name={goal.name}
onClick={() => {
onClick(goal)
}}
/>
))}
</List>);
GoalsList.propTypes = propTypes;
export default GoalsList;
我使用此组件的方式如下:
<GoalList goals={this.props.store.goals}
onClick={this.props.store.selectGoal}/>
这就是商店中如何定义目标
和选择目标
:
选择目标:
@action selectGoal = (goal) => {
this.selectedGoal = goal;
}
目标:
@observable goals = [];
我仍然在控制台中得到以下警告:
失败的prop类型: GoalList: prop类型目标
无效;它必须是一个函数,通常来自prop-type
包,但收到的未定义的
。
和:
失败的道具类型:GoalList:道具类型onClick
无效;它必须是一个函数,通常来自prop-types
包,但收到的undefined
当我调试呈现GoalList
的渲染函数时,我看到目标
是观察数组
和onClark
是一个函数。我不明白为什么我一直收到这些警告。
这里的问题是如何定义道具类型。你的代码本身很好,我猜一切都按预期进行。
函数的属性类型是PropTypes。func
,而不是PropTypes。函数
,因此应修复您在单击时看到的有关的警告。
可观察数组的mobx prop类型是
观察数组
(小写o)。
因此,最后您的
propTypes
应该如下所示:
const propTypes = {
goals: MobxPropTypes.observableArray,
onClick: PropTypes.func,
};
警告信息有点混乱,但一旦你知道发生了什么,它就有意义了:
道具类型onClick无效;它必须是一个函数
如果提供的类型与所需类型匹配,则React PROPTYPE应该是返回true的函数。
但是没有定义
但是,由于您使用了
函数
而不是函数
,因此PropTypes最终被未定义
而不是函数,因此PropTypes验证器无法正常工作。
在React中,我编写了一个无状态功能组件,现在想向其添加Prop类型验证。 组件: 组件,渲染: 正如你在中看到的,我正在传递至。因为是一个字符串,我希望道具类型验证能够生效。相反,我在浏览器控制台中得到一个错误,因为字符串没有名为的方法。 为什么道具类型验证没有按预期工作?看看这个问题,情况似乎是一样的。
在不使用类的情况下,如何在react的功能性无状态组件中使用PropTypes?
当用户单击“登录”时,会重定向到KeyClope登录页面 [Server:node-00]13:40:00709警告[org.keydape.adapters.OAuthRequestAuthenticator](默认任务-30)状态参数无效 我的申请是: 应用程序URL为https://localhost:8443/app 当我使用超文本传输协议时,它可以工作。但是当我使用https时,错误就来
我试图在TypeScript中编写一个React无状态函数组件。请参见以下代码: 然而,编译器在const Link上给了我一个错误: src/components/Link。tsx(17,7):错误TS2322:Type“({view,className,params,queryParams,store,refresh,style,children,title,router}:LinkPr…”不
我跟随一些在线示例实现了一个导航抽屉操作栏半透明状态栏。半透明的状态栏根本不会变为透明。 这是我的AndroidManifest。xml v21/风格。xml 主要活动。xml 以及主要的活动。JAVA
问题内容: 我遇到一个问题,在此应用程序上尝试POST请求时收到以下错误代码(请记住我是初学者node.js / js程序员): 错误: app.js: 以下是我的edit.js路由,我认为是发生问题的地方: 问题答案: 我刚才有一个类似的错误消息,并设法通过更改解决了该问题: 至: 要不就: 也就是说,请确保您未尝试在某处设置无效的HTTP状态代码。 这可能是问题所在,但看起来您不小心复制了代码