diff --git a/packages/core/src/Button/README.md b/packages/core/src/Button/README.md
index 7db05465a..7a8f3c07e 100644
--- a/packages/core/src/Button/README.md
+++ b/packages/core/src/Button/README.md
@@ -23,7 +23,7 @@ class Demo extends Component {
-
+
@@ -181,7 +181,7 @@ export default Demo
```
-### 自定义图标
+### 自定义图标
```jsx mdx:preview
diff --git a/packages/core/src/Button/index.tsx b/packages/core/src/Button/index.tsx
index 25f26de4a..94061764d 100644
--- a/packages/core/src/Button/index.tsx
+++ b/packages/core/src/Button/index.tsx
@@ -35,121 +35,120 @@ export interface ButtonProps extends TouchableOpacityProps {
bordered?: boolean;
}
-export default class ButtonView extends React.Component {
- static defaultProps: ButtonProps = {
- activeOpacity: 0.5,
- rounded: 5,
- bordered: true,
- size: 'default',
- };
- render() {
- const {
- children,
- style,
- textStyle: childStyle,
- rounded,
- bordered,
- color: buttonColor,
- type,
- size,
- disabled,
- loading,
- ...restProps
- } = this.props;
- let backgroundColor, textColor, borderColor, borderWidth, borderRadius;
+export default function ButtonView(props: ButtonProps) {
+ const {
+ children,
+ style,
+ textStyle: childStyle,
+ rounded,
+ bordered,
+ color: buttonColor,
+ type,
+ size,
+ disabled,
+ loading,
+ ...restProps
+ } = props;
+ let backgroundColor, textColor, borderColor, borderWidth, borderRadius;
- switch (type) {
- case 'warning':
- backgroundColor = colors.yellow;
- break;
- case 'primary':
- backgroundColor = colors.blue;
- break;
- case 'success':
- backgroundColor = colors.green;
- break;
- case 'danger':
- backgroundColor = colors.red;
- break;
- case 'light':
- backgroundColor = colors.white;
- break;
- case 'dark':
- backgroundColor = colors.black;
- break;
- default:
- break;
- }
- if (backgroundColor) {
- backgroundColor = color(backgroundColor).rgb().string();
- }
- if (type) {
- textColor = color(backgroundColor).isLight()
- ? color(colors.black).rgb().string()
- : color(colors.white).rgb().string();
- }
- if (!type) {
- borderColor = color(colors.black).alpha(0.32).rgb().string();
- borderWidth = 1;
- }
- if (disabled) {
- textColor = color(textColor).alpha(0.3).rgb().string();
- }
- if (buttonColor) {
- backgroundColor = color(buttonColor).rgb().string();
- textColor = color(buttonColor).isLight()
- ? color(buttonColor).darken(0.9).string()
- : color(buttonColor).lighten(0.9).string();
- }
- if (rounded && (typeof rounded === 'number' || typeof rounded === 'boolean')) {
- borderRadius = rounded;
- }
- if (backgroundColor) {
- borderColor = color(backgroundColor).darken(0.2).string();
- borderWidth = 1;
- }
- if (!bordered) {
- borderWidth = 0;
- }
- const buttonStyle = {
- backgroundColor,
- borderColor,
- borderWidth,
- borderRadius,
- };
- const textStyle = { color: textColor };
- let sizeStyle = {};
- if (size && styles[size]) {
- sizeStyle = styles[size];
- }
- let boxStyle = {};
- const styleKey = `${size}Box` as keyof typeof styles;
- if (size && styles[styleKey]) {
- boxStyle = styles[styleKey];
- }
- if (!children) {
- return null;
- }
- return (
-
- {loading && }
- {React.Children.toArray(children).map((child: any, idx) => {
- return (
-
- {child}
-
- );
- })}
-
- );
+ switch (type) {
+ case 'warning':
+ backgroundColor = colors.yellow;
+ break;
+ case 'primary':
+ backgroundColor = colors.blue;
+ break;
+ case 'success':
+ backgroundColor = colors.green;
+ break;
+ case 'danger':
+ backgroundColor = colors.red;
+ break;
+ case 'light':
+ backgroundColor = colors.white;
+ break;
+ case 'dark':
+ backgroundColor = colors.black;
+ break;
+ default:
+ break;
+ }
+ if (backgroundColor) {
+ backgroundColor = color(backgroundColor).rgb().string();
+ }
+ if (type) {
+ textColor = color(backgroundColor).isLight()
+ ? color(colors.black).rgb().string()
+ : color(colors.white).rgb().string();
+ }
+ if (!type) {
+ borderColor = color(colors.black).alpha(0.32).rgb().string();
+ borderWidth = 1;
+ }
+ if (disabled) {
+ textColor = color(textColor).alpha(0.3).rgb().string();
+ }
+ if (buttonColor) {
+ backgroundColor = color(buttonColor).rgb().string();
+ textColor = color(buttonColor).isLight()
+ ? color(buttonColor).darken(0.9).string()
+ : color(buttonColor).lighten(0.9).string();
+ }
+ if (rounded && (typeof rounded === 'number' || typeof rounded === 'boolean')) {
+ borderRadius = rounded;
}
+ if (backgroundColor) {
+ borderColor = color(backgroundColor).darken(0.2).string();
+ borderWidth = 1;
+ }
+ if (!bordered) {
+ borderWidth = 0;
+ }
+ const buttonStyle = {
+ backgroundColor,
+ borderColor,
+ borderWidth,
+ borderRadius,
+ };
+ const textStyle = { color: textColor };
+ let sizeStyle = {};
+ if (size && styles[size]) {
+ sizeStyle = styles[size];
+ }
+ let boxStyle = {};
+ const styleKey = `${size}Box` as keyof typeof styles;
+ if (size && styles[styleKey]) {
+ boxStyle = styles[styleKey];
+ }
+ if (!children) {
+ return null;
+ }
+ return (
+
+ {loading && }
+ {React.Children.toArray(children).map((child: any, idx) => {
+ return (
+
+ {child}
+
+ );
+ })}
+
+ );
}
+ButtonView.defaultProps = {
+ activeOpacity: 0.5,
+ rounded: 5,
+ bordered: true,
+ size: 'default',
+} as ButtonProps;
+
const styles = StyleSheet.create({
button: {
borderStyle: 'solid',