React Native 的故事书

react native 的故事书

专家您好,我们都在应用程序中使用可重用组件,或者我们开发了在多个地方经常使用的自定义组件,并将逻辑分开,因此每当我们更改业务逻辑时,它都会在使用它的任何地方反映出来。如果我说向我展示您开发的组件,您需要在一个组件中导入/实现它并运行应用程序,会发生什么,对吗?有什么方法可以让我在一个地方看到所有可重用组件,我可以使用它,更改各种道具并验证它?是的,它就在那里。

什么是故事书?

storybook 允许开发人员编写故事(自定义组件)、运行故事、使用各种属性、验证它,而无需运行实际应用程序,也无需导入任何组件。 storybook 让开发人员的生活变得更加简单,开发人员可以从一个地方使用所有 story(自定义组件)——这就是 storybook。 storybook 与最流行的 javascript ui 框架(如 react、react native、angular、vue)集成,并支持服务器渲染组件框架(如 ruby on rails)。

什么是故事?

story 捕获 ui 组件的渲染状态。开发人员可以为每个组件编写多个故事。故事以组件故事格式 (csf) 编写,这是一种基于 es6 模块的标准,用于编写组件。

故事书特点——

独立组件开发

提供强大的 ui

增强您工作流程的插件

一致的用户体验

单元测试组件

巧文书 巧文书

巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

巧文书 61 查看详情 巧文书

共享和重用组件

安装 —

从 react native 应用程序的根目录中执行此命令:

npx -p @storybook/cli sb init — 输入react_native

系统会提示您询问是否要安装@storybook/react-native-server,您现在可以安全地选择不安装它,因为您可以稍后添加它,而且这不是必需的。

运行故事书 —

# starts storybook in development modenpm run storybook

写故事——

创建任务组件

// components/task.jsimport * as react from 'react';import { textinput, safeareaview } from 'react-native';import { styles } from '../constants/globalstyles';export default function task({ task: { id, title, state }, onarchivetask, onpintask }) {  return (                );}

创建任务故事

// components/task.stories.jsimport * as react from 'react';import { view } from 'react-native';import { styles } from '../constants/globalstyles';import { storiesof } from '@storybook/react-native';import { action } from '@storybook/addon-actions';import task from './task';export const task = {  id: '1',  title: 'test task',  state: 'task_inbox',  updatedat: new date(2018, 0, 1, 9, 0),};export const actions = {  onpintask: action('onpintask'),  onarchivetask: action('onarchivetask'),};storiesof('task', module)  .adddecorator(story => {story()})  .add('default', () => )  .add('pinned', () => )  .add('archived', () => <task task={{ ...task, state: 'task_archived' }}

配置

// storybook/index.jsimport { getstorybookui, configure } from '@storybook/react-native';import './rn-addons';// import storiesconfigure(() => {  require('../components/task.stories.js');}, module);const storybookuiroot = getstorybookui({  asyncstorage: null,});export default storybookuiroot;

渲染全部 |具体故事

import { getStorybookUI, configure } from '@storybook/react-native';import { name as appName } from './app.json';import { AppRegistry } from 'react-native';configure(() => {  require('./storybook/stories/Button/Button.stories.js'); // render all stories require(‘./storybook/stories’) - which contain all your stories}, module);const StorybookUIRoot = getStorybookUI({});AppRegistry.registerComponent(appName, () => StorybookUIRoot);

附加组件 —

旋钮 —
npm i — 保存@storybook/addon-ondevice-knobs
允许开发者实时调整组件 props。

行动 —
npm i — 保存@storybook/addon-ondevice-actions
开发人员可以使用将在操作选项卡中记录信息的操作来验证 onpress 调用。

笔记 —
npm i — 保存@storybook/addon-ondevice-notes
允许开发者在您的故事中添加一些 markdown 以帮助记录其使用情况。

背景 —
npm i — 保存@storybook/addon-ondevice-backgrounds
允许开发人员更改故事书的背景,以将组件的外观与不同背景进行比较。

感谢您阅读文章!

以上就是React Native 的故事书的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/451096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 23:11:39
下一篇 2025年11月7日 23:12:33

相关推荐

  • 在Python列表中查找包含用户输入变量的子字符串

    本文旨在解决如何在Python列表中查找包含用户输入子字符串的问题。我们将提供一个实际示例,展示如何使用列表推导式和`any()`函数高效地搜索包含特定字符串的元组,并讨论处理不同数据类型的注意事项,以及如何针对特定字段进行匹配。 列表子字符串搜索:高效方法 假设我们有一个包含住宿信息的列表,每个住…

    2025年12月14日
    000
  • 在 Python 列表中查找包含用户输入字符串的子字符串

    本文介绍了如何在 Python 列表中搜索包含用户输入字符串的子字符串。通过示例代码详细讲解了如何正确地使用 `in` 运算符和列表推导式来实现字符串匹配,并针对可能出现的重复匹配和数据类型问题提供了解决方案,确保搜索功能的准确性和可靠性。 在 Python 中,经常需要在列表中查找包含特定子字符串…

    2025年12月14日
    000
  • 在Python列表中查找包含用户输入子字符串的元素

    本文将介绍如何在Python列表中查找包含用户指定子字符串的元素。我们将通过示例代码详细讲解如何实现这一功能,并针对常见问题提供解决方案,确保你能准确高效地完成字符串匹配任务。同时,针对数据类型不一致的情况,提供兼容性处理方案。 使用列表推导式进行子字符串查找 假设我们有一个包含多个住宿地点的列表,…

    2025年12月14日
    000
  • Django表单中基于用户输入动态填充字段的教程

    本教程详细介绍了如何在Django应用中实现表单字段的动态填充。我们将重点利用前端JavaScript/jQuery技术,根据用户在一个字段(如账户类型)的选择,自动填充另一个相关字段(如开户最低金额),从而提升用户体验。同时,教程也会涵盖Django后端(forms.py, models.py, …

    2025年12月14日
    000
  • 网页内容抓取进阶:解析JavaScript动态加载的数据

    本教程旨在解决使用BeautifulSoup直接解析HTML元素时,无法获取到通过JavaScript动态加载内容的常见问题。我们将深入探讨当目标文本被嵌入到标签内的JavaScript变量(如window.__INITIAL_STATE__)中时,如何结合使用requests库、正则表达式和jso…

    2025年12月14日
    000
  • Django 后端权限管理与前端视图控制:基于 Group 的最佳实践

    在构建 Django 后端与 Vue 前端应用时,如何高效地将用户权限信息同步至前端以实现视图控制是一个常见挑战。本文将探讨不同的权限数据传输策略,并强烈推荐利用 Django 内置的 Group 系统来管理和暴露用户权限,以实现灵活、可扩展且易于维护的权限控制方案,避免自定义角色字段或混合使用带来…

    2025年12月14日
    000
  • 利用Django Groups在Vue应用中管理前端视图权限

    本文探讨了在Django后端和Vue前端应用中,如何有效地利用Django内置的用户组功能来管理前端视图权限。通过分析不同策略的优劣,我们推荐将Django用户组作为前端权限控制的核心机制,并详细阐述了后端数据序列化和前端消费这些权限信息以实现动态视图限制的最佳实践,旨在提供一个结构清晰、易于维护的…

    2025年12月14日
    000
  • 将OpenAI API驱动的ChatGPT集成到HTML网页的完整教程

    本教程详细阐述了如何将基于Python的OpenAI ChatGPT后端与前端HTML网页进行集成。通过构建一个轻量级的Python Web API(如使用Flask框架),前端JavaScript能够向后端发送用户输入,后端处理后调用OpenAI API获取响应,并将结果以JSON格式返回给前端,…

    2025年12月14日
    000
  • Flask跨域Cookie设置:确保前端正确接收的实践指南

    本教程详细探讨了在Flask后端与VueJS前端进行跨域通信时,如何正确设置并确保浏览器接收Cookie。重点分析了Flask中make_response和set_cookie的正确使用方式,并指出常见的返回错误,同时强调了CORS配置和前端withCredentials的重要性,旨在帮助开发者避免…

    2025年12月14日
    000
  • 解决Flask中Cookie设置不生效的常见陷阱与最佳实践

    在Flask应用开发中,开发者常遇到尝试设置Cookie却发现浏览器未接收到的问题。本文将深入剖析这一常见陷阱,指出问题通常源于错误地返回了jsonify对象而非经过make_response处理并附加了Cookie的响应对象。通过理解Flask的响应机制,并提供正确的代码示例和注意事项,确保您的C…

    2025年12月14日
    000
  • Flask set_cookie 失效问题解析与正确实践

    本文深入探讨Flask应用中set_cookie无法正确设置cookie的常见原因。核心问题在于未返回包含cookie的make_response对象,而是直接返回了jsonify结果。教程将提供正确的实现方式,并强调跨域(CORS)配置的重要性,确保cookie能被客户端正确接收和存储。 理解Fl…

    2025年12月14日
    000
  • 解决 Discord Authorization Token 失效问题:实用指南

    本文旨在帮助开发者解决 Discord Authorization Token 失效的问题。通过提供验证 Token 有效性的代码示例,以及排查 Token 失效原因的思路,帮助开发者快速定位并解决问题,确保 Discord API 调用的顺利进行。 Discord Authorization To…

    2025年12月14日
    000
  • Django和Flask框架的优缺点对比。

    Django适合中大型项目,因其“电池已包含”特性可快速构建功能完备的Web应用,如电商平台或CMS,内置ORM、Admin后台等模块显著提升开发效率;2. Flask作为轻量级微框架,核心简洁、自由度高,更适合API服务、微服务或小型工具开发,尤其在需要高度定制或资源受限的场景下表现优异;3. 开…

    2025年12月14日
    000
  • 使用 Selenium 进行动态网页抓取

    Selenium能执行JavaScript并模拟用户行为,适用于抓取动态渲染的网页内容。它通过启动真实浏览器实例,获取完整DOM结构,支持等待异步加载、点击按钮、滚动页面等交互操作,可应对单页应用、无限滚动、登录交互等复杂场景。相比requests+BeautifulSoup仅能获取静态HTML,S…

    2025年12月14日
    000
  • Python如何构建爬虫中间件?Scrapy组件开发

    下载器中间件用于在请求发出前和响应接收后进行干预,适用于代理切换、用户代理管理、请求重试等网络层操作;2. 蜘蛛中间件用于在响应传递给蜘蛛前或蜘蛛输出结果后进行处理,适用于数据预处理、结果过滤、异常处理等解析层操作;3. 两者通过在scrapy的settings.py中配置中间件类及其优先级来启用,…

    2025年12月14日
    000
  • Python怎样实现网页截图?selenium无头模式

    python结合selenium无头模式实现网页截图的核心步骤是:1. 安装selenium库并下载对应浏览器的webdriver;2. 导入webdriver和options模块;3. 创建chromeoptions对象并添加–headless、–disable-gpu、&…

    2025年12月14日 好文分享
    000
  • Vue3前端上传文件大小限制:真的存在极限吗?

    Vue3前端文件上传:大小限制深度解析 在Vue3前端开发中,文件上传大小限制是一个常见问题。许多开发者采用分片上传技术处理大文件,但通常会设置例如1GB的上传上限。这引发了一个关键问题:Vue3前端文件上传是否存在真正的极限?理论上,分片上传能否突破1TB甚至更大的限制?为什么实际应用中往往设置了…

    2025年12月13日
    000
  • Vue3+Axios请求速度变慢四倍是什么原因?

    Vue3 + Axios 请求速度变慢:排查浏览器设置 在使用 Vue3 和 Axios 进行后端 API 调用时,有时会遇到请求速度显著下降的情况。本文分析一个案例:Vue3 + Axios 请求速度变慢四倍,而使用后端框架自带的测试工具却速度很快。 这表明问题并非源于后端代码或 API 本身。 …

    2025年12月13日
    000
  • Vue3前端文件上传:1GB大小限制是硬性规定吗?

    Vue3前端文件上传:1GB限制的真相 在Vue3前端开发中,许多开发者会遇到文件上传大小限制,常见的是1GB的限制,并建议使用分片上传技术处理大文件。但这1GB的限制究竟从何而来?Vue3本身是否真的存在无法逾越的上传文件大小限制呢?我们能否上传TB级甚至更大的文件? 首先,需要明确一点:Vue3…

    2025年12月13日
    000
  • Vue3前端上传文件:1TB文件真的可以上传吗?

    Vue3前端大文件上传:1TB文件上传挑战与解决方案 Vue3前端文件上传经常面临文件大小限制,许多教程示例都设置了例如1GB的上限。但这是否意味着Vue3存在无法突破的限制?能否上传1TB甚至更大的文件? 本文探讨Vue3前端上传超大文件(例如TB级)的可行性及技术方案。虽然分片上传技术常被推荐用…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信