Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 覆盖BaseWeb';s文件上载器按钮标签文本_Reactjs_Baseweb - Fatal编程技术网

Reactjs 覆盖BaseWeb';s文件上载器按钮标签文本

Reactjs 覆盖BaseWeb';s文件上载器按钮标签文本,reactjs,baseweb,Reactjs,Baseweb,试图覆盖按钮文本,但ButtonComponent.props具有任何类型,因此无法确定我可以传递到那里的内容。我的想法是设置children属性,但按钮文本保持不变。有人能给个提示吗 import { FileUploaderProps, FileUploader } from 'baseui/file-uploader'; import React, { FC } from 'react'; const StyledFileUploader: FC<FileUploaderProps

试图覆盖按钮文本,但
ButtonComponent.props
具有
任何类型,因此无法确定我可以传递到那里的内容。我的想法是设置
children
属性,但按钮文本保持不变。有人能给个提示吗

import { FileUploaderProps, FileUploader } from 'baseui/file-uploader';
import React, { FC } from 'react';

const StyledFileUploader: FC<FileUploaderProps> = (props) => {
  return (
    <FileUploader
      {...props}
      overrides={{
        ButtonComponent: {
          props: {
            children: 'text',
            overrides: {
              BaseButton: {
                children: 'text',
                props: {
                  children: 'text',
                },
                style: () => ({
                  backgroundColor: '#A4A4A4',
                  color: '#fff',
                  borderRadius: '2px',
                  paddingTop: '3px',
                  paddingRight: '22px',
                  paddingBottom: '3px',
                  paddingLeft: '22px',
                  fontSize: '16px',
                  lineHeight: '20px',
                  ':hover': {
                    backgroundColor: '#A4A4A4',
                    color: '#fff',
                  },
                }),
              },
            },
          },
        },
        FileDragAndDrop: {
          style: () => {
            return {
              backgroundColor: 'transparent',
              borderLeftColor: 'transparent',
              borderRightColor: 'transparent',
              borderTopColor: 'transparent',
              borderBottomColor: 'transparent',
            };
          },
        },
        ContentMessage: {
          style: () => {
            return {
              display: 'none',
            };
          },
        },
      }}
    />
  );
};

export default StyledFileUploader;
从'baseui/file uploader'导入{FileUploaderProps,FileUploader};
从“React”导入React,{FC};
const StyledFileUploader:FC=(道具)=>{
返回(
({
背景颜色:“#A4A4A4”,
颜色:“#fff”,
边界半径:“2px”,
paddingTop:'3px',
paddingRight:'22px',
填充底部:“3px”,
paddingLeft:'22px',
fontSize:'16px',
线宽:“20px”,
“:悬停”:{
背景颜色:“#A4A4A4”,
颜色:“#fff”,
},
}),
},
},
},
},
FileDragAndDrop:{
风格:()=>{
返回{
背景色:“透明”,
borderLeftColor:'透明',
borderRightColor:“透明”,
borderTopColor:'透明',
borderBottomColor:'透明',
};
},
},
内容信息:{
风格:()=>{
返回{
显示:“无”,
};
},
},
}}
/>
);
};
导出默认的StyledFileUploader;

如果不覆盖整个组件,我怀疑您是否可以。这对于
儿童
道具来说是一个奇怪的例外

看一看<代码>startEnhancer
将受到尊重,
儿童
不:

import { FileUploader } from "baseui/file-uploader";
import React from "react";

const StyledFileUploader = (props) => {
  return (
    <FileUploader
      {...props}
      overrides={{
        ButtonComponent: {
          props: {
            startEnhancer: "I'm here!",
            children: "I won't be..."
          }
        }
      }}
    />
  );
};

export default StyledFileUploader;
从“baseui/file uploader”导入{FileUploader};
从“React”导入React;
常量StyledFileUploader=(道具)=>{
返回(
);
};
导出默认的StyledFileUploader;

原因可以在实施中找到:

  • FileUploader
    提供了
    按钮
    覆盖道具
  • 按钮
    ifself将自己的道具(
    this.props
    )传递给
    按钮内部
  • ButtonInternals
    呈现其
    子对象
    和其他一些内容
  • 但是
    FileUploader
    {locale.FileUploader.browseFiles}
    传递到
    按钮
    作为
    子项
    ,该按钮位于
    覆盖
    之后(因此覆盖了覆盖…)


    您可能希望提交错误报告(因此
    子项
    会放在
    文件上传程序
    中的覆盖道具之前),或者只覆盖整个按钮组件。

    我怀疑您可以不覆盖整个组件。这对于
    儿童
    道具来说是一个奇怪的例外

    看一看<代码>startEnhancer
    将受到尊重,
    儿童
    不:

    import { FileUploader } from "baseui/file-uploader";
    import React from "react";
    
    const StyledFileUploader = (props) => {
      return (
        <FileUploader
          {...props}
          overrides={{
            ButtonComponent: {
              props: {
                startEnhancer: "I'm here!",
                children: "I won't be..."
              }
            }
          }}
        />
      );
    };
    
    export default StyledFileUploader;
    
    从“baseui/file uploader”导入{FileUploader};
    从“React”导入React;
    常量StyledFileUploader=(道具)=>{
    返回(
    );
    };
    导出默认的StyledFileUploader;
    

    原因可以在实施中找到:

  • FileUploader
    提供了
    按钮
    覆盖道具
  • 按钮
    ifself将自己的道具(
    this.props
    )传递给
    按钮内部
  • ButtonInternals
    呈现其
    子对象
    和其他一些内容
  • 但是
    FileUploader
    {locale.FileUploader.browseFiles}
    传递到
    按钮
    作为
    子项
    ,该按钮位于
    覆盖
    之后(因此覆盖了覆盖…)


    你可能想提交一个bug报告(这样
    FileUploader
    中的覆盖道具之前就会有
    children
    ),或者只覆盖整个按钮组件。

    在公认答案的帮助下,我想出了如何覆盖按钮组件。最初我认为这是不可能的(因为组件丢失了点击处理程序),但是
    道具实际上携带了它,所以我们可以使用
    {
    返回(
    (
    ({
    背景颜色:“#A4A4A4”,
    颜色:“#fff”,
    borderTopRightRadius:'2px',
    borderTopLeftRadius:'2px',
    borderBottomRightRadius:'2px',
    borderBottomLeftRadius:'2px',
    paddingTop:'3px',
    paddingRight:'22px',
    填充底部:“3px”,
    paddingLeft:'22px',
    fontSize:'16px',
    线宽:“20px”,
    “:悬停”:{
    背景颜色:“#A4A4A4”,
    颜色:“#fff”,
    },
    }),
    },
    }}
    >
    上传
    ),
    FileDragAndDrop:{
    风格:()=>{
    返回{
    背景色:“透明”,
    borderLeftColor:'透明',
    borderRightColor:“透明”,
    borderTopColor:'透明',
    borderBottomColor:'透明',
    };
    },
    },
    内容信息:{
    风格:()=>{
    返回{
    显示:“无”,
    };
    },
    },
    }}
    />
    );
    };
    
    在公认答案的帮助下,我想出了如何覆盖按钮组件。最初我认为这是不可能的(因为组件丢失了点击处理程序),但是
    道具实际上携带了它,所以我们可以使用
    {
    返回(
    (
    ({
    背景颜色:“#A4A4A4”,
    颜色:“#fff”,
    borderTopRightRadius:'2px',
    borderTopLeftRadius:'2px',