React Native Storybook 教程
Storybook 帮助您构建与应用的业务逻辑和上下文隔离的 UI 组件。本版 Storybook 入门教程适用于 React Native;还有其他版本适用于 React, Vue, Angular, Svelte。
设置 React Native Storybook
我们需要遵循几个步骤才能开始。在本教程中,我们将使用此 模板,我们在此模板中已经使用 Expo 设置了一个 React Native 应用,并添加了 Storybook 到项目中。
在开始之前,我们需要考虑一些事项
- 为了帮助您完成本教程,您需要一部已配置好手机或模拟器来运行应用。更多信息请参阅 Expo 文档中关于 在 iOS 上运行 和 Android 的部分。
- 本教程将重点关注 iOS/Android。React Native 可以面向本教程不涉及的其他平台。
- 您还需要在您的机器上配置 Node.js。
首先下载我们为本教程创建的模板。
npx degit chromaui/intro-storybook-react-native-template#main taskbox
接下来,我们安装依赖并运行应用,以确保一切正常运行。
cd taskbox
yarn install
现在您已经有了应用,让我们运行它以确保一切正常运行。
您可以选择 ios 或 android 并运行其中一个,确保应用正常工作。
# Run the application on iOS
yarn ios
# Run the application on Android
yarn android
# Run Storybook on iOS
yarn storybook:ios
# Run Storybook on Android
yarn storybook:android
使用 yarn ios
运行应用时,您应该在设备上看到此渲染结果

使用 yarn storybook:ios
运行 Storybook 时,您应该看到此结果

工作原理
初始化后,模板已经提供了必要的配置,帮助我们开始使用 React Native 开发应用。在开始从头构建我们的 UI 之前,让我们花点时间看看 Storybook 在 React Native 应用中如何工作以及有何不同。
React Native 中的 Storybook 是一个您可以在应用中渲染的组件,这与 Storybook 独立运行的其他框架版本不同。
由于这种区别,我们需要一种在应用和 Storybook 之间切换的方式。为此,我们使用环境变量,现在我们将快速介绍一下。
💡 有关如何使用环境变量的更多详细信息,请参阅 Expo 文档。
在我们的项目中有一个名为 app.config.js
的 Expo 配置文件,我们在此文件中配置应用名称和整个应用中使用的常量等内容。
在此文件中,我们将 storybookEnabled
常量设置为环境变量 STORYBOOK_ENABLED
的值,稍后我们会介绍它。
export default ({ config }) => ({
...config,
name: 'Storybook Tutorial Template',
slug: 'storybook-tutorial-template',
extra: {
storybookEnabled: process.env.STORYBOOK_ENABLED,
},
});
这使我们可以使用 expo-constants
包在应用中访问 storybookEnabled
变量,并用它来确定是渲染 Storybook 还是您的应用。
import Constants from 'expo-constants';
function App() {
// ... removed for brevity
}
// Default to rendering your app
let AppEntryPoint = App;
// Render Storybook if storybookEnabled is true
if (Constants.expoConfig.extra.storybookEnabled === 'true') {
AppEntryPoint = require('./.storybook').default;
}
export default AppEntryPoint;
在 package.json
文件中,我们看到一些新的 Storybook 脚本。我们使用这些脚本将该环境变量传递给我们的应用,它使用 cross-env
交换入口点到 Storybook UI,以确保这在所有平台(Windows/macOS/Linux)上都能工作。
{
"scripts": {
"storybook": "cross-env STORYBOOK_ENABLED='true' expo start",
"storybook:ios": "cross-env STORYBOOK_ENABLED='true' expo ios",
"storybook:android": "cross-env STORYBOOK_ENABLED='true' expo android"
}
}
在这里,我们将 STORYBOOK_ENABLED
环境变量设置为 true,这会告诉我们的应用渲染 Storybook 而不是应用本身。
提交更改
在此阶段,将文件添加到本地仓库是安全的。运行以下命令来初始化本地仓库,添加并提交我们目前所做的更改。
git init
接着是
git add .
然后
git commit -m "first commit"
最后
git branch -M main
让我们开始构建我们的第一个组件吧!