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',