Reactjs 创建可以接收随机名称的propType
我有一个组件,它接收任何包含“数据-任何内容”的道具。例如,数据测试,data-test2Reactjs 创建可以接收随机名称的propType,reactjs,react-props,react-proptypes,Reactjs,React Props,React Proptypes,我有一个组件,它接收任何包含“数据-任何内容”的道具。例如,数据测试,data-test2 <NotificationComponent id={'ID'} data_test={data}></NotificationsComponent> 组件工作正常,但我需要知道如何在propTypes中声明一个道具,该名称将是收到的名称,首先它将是“未定义的” 该组件工作正常,但我需要知道如何在propTypes中声明道具。该名称将是道具接收到的名称(“数据-任何内容”)。
<NotificationComponent id={'ID'} data_test={data}></NotificationsComponent>
组件工作正常,但我需要知道如何在propTypes中声明一个道具,该名称将是收到的名称,首先它将是“未定义的”
该组件工作正常,但我需要知道如何在propTypes中声明道具。该名称将是道具接收到的名称(“数据-任何内容”)。首先,它将是“未定义的”
我试过以下方法
class NotificationsComponent extends Component {
render() {
store.addNotification({
title: 'Title',
message: 'Message',
type: 'danger',
container: 'top-right',
animationIn: ["animated", "fadeIn"],
animationOut: ["animated", "fadeOut"],
dismiss:{
showIcon: true,
duration: 8000,
onScreen: true
}
});
return (
<div>
<ReactNotifications />
</div>
);
}
NotificationsComponent.propTypes = {
id: PropTypes.string,
//In the next propType is my problem
//The customProp must change the name by the prop it receive
customProp: function customProp(props, propName, componentName) {
const key = Object.keys(props).find(propKey => {
if (['id'].includes(propKey)
|| (/^data_.+/.test(propKey))) {
return false;
}
return true;
});
if (key) {
return new Error(
'Invalid prop `' + key + '` supplied to' +
' `' + componentName + '`. Validation failed.'
);
}
}
};
export default NotificationsComponent;
类通知组件扩展组件{
render(){
store.addNotification({
标题:“标题”,
消息:“消息”,
类型:“危险”,
容器:“右上角”,
动画输入:[“动画”、“fadeIn”],
动画输出:[“动画”、“淡出”],
驳回:{
showIcon:没错,
持续时间:8000,
屏幕上:真的
}
});
返回(
);
}
NotificationsComponent.propTypes={
id:PropTypes.string,
//在下一步中,propType是我的问题
//customProp必须根据其接收的道具更改名称
customProp:函数customProp(props、propName、componentName){
const key=Object.key(props.find)(propKey=>{
如果(['id'].includes(propKey)
||(/^data.+/.test(propKey))){
返回false;
}
返回true;
});
如果(关键){
返回新错误(
“提供给”的“无效道具”`+key+'`+
“`+componentName+`。验证失败。”
);
}
}
};
导出默认通知组件;
但这是不正确的
有什么想法吗
谢谢你的帮助
const key = Object.keys(props).find(propKey => {
if (['id'].includes(propKey)
|| (/^data_.+/.test(propKey))) {
// console.log(propKey);
return false;
}
return true;
});
if (key) {
return new Error(
'Invalid prop `' + key + '` supplied to' +
' `' + componentName + '`. Validation failed.'
);
}
首先,很抱歉,我之前的回答不清楚。其次,正则表达式不正确。在您的情况下,您可以迭代所有道具并检查随机道具。为什么它是一个对象?我认为名称应该是一个字符串,因为它是一个包含字典的变量。数据测试={title:'title',message:'message',…};请编辑您的答案,并通过解释您的答案如何解决问题来添加一些上下文,而不是只发布代码答案。好的,我试图用完整的示例更好地解释一些内容谢谢您的帮助elvis_ferns。但是我继续问题->类型错误:意外的关键字参数
数据测试
允许的参数:customProp,id/^data-.+
应该是/^data.+
,然后