Reactjs 创建可以接收随机名称的propType

Reactjs 创建可以接收随机名称的propType,reactjs,react-props,react-proptypes,Reactjs,React Props,React Proptypes,我有一个组件,它接收任何包含“数据-任何内容”的道具。例如,数据测试,data-test2 <NotificationComponent id={'ID'} data_test={data}></NotificationsComponent> 组件工作正常,但我需要知道如何在propTypes中声明一个道具,该名称将是收到的名称,首先它将是“未定义的” 该组件工作正常,但我需要知道如何在propTypes中声明道具。该名称将是道具接收到的名称(“数据-任何内容”)。

我有一个组件,它接收任何包含“数据-任何内容”的道具。例如,数据测试,data-test2

<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.+
,然后