Reflexjs
文档模块库指南GitHub
/
,

升级指南

分步指南,升级您的网站至 Reflexjs 2.0。


本指南正在进行中。如果您在升级网站时遇到任何问题,请在 GitHub 上创建问题。我们会提供帮助。

变更日志

新增内容

  1. Reflexjs 已升级以适用于 React 17.0.0。这意味着我们现在可以完全支持 新的 JSX 变换
  2. 我们还升级到了 Theme UI 0.6.0。这引入了一些重大更改(见下文)。
  3. 变体现在可调用。
theme.ts
const theme = {
button: {
primary: {
bg: "primary",
},
outline: (theme, styles) => {
color: styles?.bg // This returns "primary" with button.primary.outline.
},
},
}
<button variant="button.primary.outline" />

重大更改

  1. TypeScript:React 组件现在必须扩展 React.HTMLAttributes<T> 以用于样式属性。
- interface ButtonLinkProps {
+ interface ButtonLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {
children?: React.ReactNode
}
export function ButtonLink({ children, ...props }) {
return (
<a variant="button.link" {...props}>
{children}
</a>
)
}
  1. 全局样式(styles.global)已替换为 useRootStyles
theme.ts
const theme = {
useRootStyles: true,
styles: {
// Applies to <html />.
root: {
m: 0,
p: 0,
"*": {
boxSizing: "border-box",
},
},
},
}

useRootStyles: truestyles.root 应用到 html

useRootStyles: falsestyles.root 应用到 body

弃用

  1. 例如 GridFlexFlexboxContainer 之类的组件现已弃用。
  2. reflexjs/babel 已弃用,并替换为 @babel/preset-react

升级

要将您的网站升级至 Reflexjs

  1. 更新 reactreact-domreflexjs
yarn add react react-dom reflexjs
  1. 更新 .babelrc

如果您正在使用Next.js,您的 .babelrc 文件应如下所示

{
"presets": [
[
"next/babel",
{
"preset-react": {
"runtime": "automatic",
"importSource": "reflexjs"
}
}
]
]
}
  1. 编辑您的主题,并将 styles.global 下的样式移到 styles.root 下,并设置 useRootStyles: true。如果您在 html 下有样式,请直接移到 root 下。
theme.ts
const theme = {
useRootStyles: true,
styles: {
// Applies to <html />.
root: {
m: 0,
p: 0,
"*": {
boxSizing: "border-box",
},
body: {},
},
},
}
开始使用Next.js

© 2022 Reflexjs

文档区块库指南GitHub