标签: storybook

如何在使用Next.js完成的外部项目中使用Storybook组件(和Lerna)?

我刚刚创建了我的Storybook组件库(ES6等)。它被构造为一个Lerna项目(所有组件都隔离在package /文件夹中)。但是,这是一个私人仓库,没有真正的发布功能,因此,我认为Lerna无法使用私人(免费)帐户。我已将故事书存储库原封不动地推送到了我的Bitbucket。

现在,我想使用主要应用程序中的组件的故事书库,它是基于Next.js构建的不同存储库(在Bitbucket上)。

我试图按如下方式导入各个故事书组件

import MyComponent from 'storybook-repo/packages/my-component/my-component';
Run Code Online (Sandbox Code Playgroud)

但显然不起作用,返回此错误:

Module parse failed: Unexpected token (8:9)
You may need an appropriate loader to handle this file type.
Run Code Online (Sandbox Code Playgroud)

MyComponent是因为是jsx文件。我希望Next.js转换导入的模块,但事实并非如此。

我的问题是:

  1. 我的胆量说,git+ssh://git@bitbucket.org/myusername/storybook-repo.git从中导入整个故事书package.json不是一个好主意。有更好的解决方案吗?

  2. Lerna仅在我可以发布我的软件包的公共/专业仓库中工作是真的吗?

  3. 为什么Next.js不转译导入的jsx模块?此时,此过程如何工作?我应该从远程存储库中移植故事书组件,还是从主应用程序中完成工作?

谢谢

reactjs lerna monorepo next.js storybook

2
推荐指数
1
解决办法
1161
查看次数

故事书不会在Vue项目的组件中加载SVG

我已经创建了一个Vue项目,vue-cli并作为依赖项安装了storybook以后,npm install --save-dev storybook以显示我创建的组件。

故事书的webpack配置如下所示:

const path = require('path')

module.exports = async ({ config, mode }) => {
  config.module.rules.push(
    {
      test: /\.svg$/,
      use: ['vue-svg-loader']
    },
    {
      test: /\.scss$/,
      use: [
        'style-loader',
        'css-loader',
        {
          loader: 'sass-loader',
          options: {
            sourceMap: false,
            data: '@import "./src/assets/styles/main.scss";'
          }
        }
      ],
      include: path.resolve(__dirname, '../')
    }
  )

  return config
}

Run Code Online (Sandbox Code Playgroud)

和这样的故事index.js

import Vue from 'vue';
import { storiesOf } from '@storybook/vue';
import Alert from '../src/components/buttons/Alert.vue';

storiesOf('Components', module)
  .add('Alert', () …
Run Code Online (Sandbox Code Playgroud)

webpack vue.js vue-component vuejs2 storybook

2
推荐指数
1
解决办法
645
查看次数

Storybook 和 AntDesign 组件 - 如何使用 CRA 和 Typescript 进行设置?

我想使用 Typescript 在我的 CRA 项目中使用基于 AntDesign 组件构建的组件来设置 Storybook。

CRA - v3 故事书 - v5.25 AntDesign - v3.23.2

我成功设置了 CRA + AntDesign,设置了 Storybook,我的 AntDesign 组件使用 AntD css 类在 Storybook 中渲染,但缺少样式

我试过

这些方法都不允许我用样式渲染 AntD 组件

// .stories/webpack.config.js

const path = require("path");

module.exports = {
  module: {
    rules: [
      {
        loader: "babel-loader",
        exclude: /node_modules/,
        test: /\.js$/,
        options: {
          presets: ["@babel/react"], …
Run Code Online (Sandbox Code Playgroud)

typescript create-react-app antd storybook

2
推荐指数
1
解决办法
3604
查看次数

故事书不呈现故事,错误:“useContext(...) 未定义”

如果我为以下组件创建故事,我只会收到几条红框内的消息,其中不包含任何我可以从中获得任何见解的信息:

import React, { useState, useContext } from "react";
import { FormGroup, FormControl, Col } from "react-bootstrap";
import Button from "../button/Button";
import AuthContext from "../../AuthContext";
import { useHistory } from "react-router-dom";
import LoginWarning from "./LoginWarning";

export function Login(props) {
  const [email, setEmail2] = useState("");
  const [password, setPassword] = useState("");
  const [showAlert, setShowAlert] = useState(false);
  const {
    setRole,
    setName,
    setEmail,
    setSessionId,
    setLocalStorage
  } = useContext(AuthContext);
  let history = useHistory();

  function validateForm() {
    return email.length > 0 && password.length > 0;
  } …
Run Code Online (Sandbox Code Playgroud)

reactjs storybook

2
推荐指数
1
解决办法
4160
查看次数

如何在 Storybook 中使用 React 的全局变量

我找到了这个答案,但我无法用它解决问题。

我尝试在 Storybook 中加载的组件取决于通过 index.html 中的 CDN 注入的全局变量。

为了访问组件中的变量,我在文件顶部添加了此注释

/*global <variable name>*/
Run Code Online (Sandbox Code Playgroud)

它在 React 应用程序中工作正常,但 Storybook 抛出此错误:<variable name> is not defined

我尝试在文件顶部stories.js和配置文件顶部添加该注释。- 没有运气。

CDN 的 URL 位于 env 文件中。通过查看文档,我尝试在 HTML 文件中添加第二个脚本,其中包含一个前缀为STORYBOOK_. 那也没用。

关于我能做些什么来克服这个问题有什么想法吗?

reactjs storybook

2
推荐指数
1
解决办法
1万
查看次数

打字稿中的故事书配置

我想写故事书装饰器。有没有办法preview.js用打字稿来写它?

我已经成功地在 TS 中编写故事本身,现在想在 TS 中编写故事书配置。

config typescript storybook

2
推荐指数
2
解决办法
741
查看次数

v-html 指令渲染原始 html

这是我的组件的样子

<template>
 <div v-html="someHtml"></div>
</template>

 <script>
 export default {
   name: "test",
   props: {
    someHtml: String,
   },
 }
 </script>
Run Code Online (Sandbox Code Playgroud)

组件在故事书中的使用方式:

export const testtest = () => ({
  components: {test},
  props: {
    someHtml: {default: text('somehtml', '<a href="link" class="link text-theme">see data</a>')}
},
template: `
    <test v-bind="$props"/>
`,
});
Run Code Online (Sandbox Code Playgroud)

输出始终是 html 原始字符串,如下所示 ==>

<a href="link" class="link text-theme">see data</a>
Run Code Online (Sandbox Code Playgroud)

文档很清楚用法,但它仍然对我不起作用。

我将原始 html 作为道具传递。当我使用 vue js 数据中的原始 html 时,它正在工作并且能够“解析”html 字符串并正确呈现它。

javascript vue.js storybook

2
推荐指数
1
解决办法
1万
查看次数

Storybook 6 - 如何设置对象数组?

我想为我的 Badge 组件传递数据道具,但库中的array方法有问题addon-knobs。Data prop 是一个对象数组,我试图像这样传递它:

const data = [
  object('First', {color: '#fa2dac', text: 'RSS'}),
  object('Second', {color: '#fa2dac', text: 'RSS'}),
];
Run Code Online (Sandbox Code Playgroud)

这给我的结果是我有 2 个字段(第一个和第二个),但是当我想更改内部的值时,它们不会在屏幕上更新。

第二次尝试:

const data = array('List of items', [
  object('First', {color: '#fa2dac', text: 'RSS'}),
  object('Second', {color: '#fa2dac', text: 'RSS'}),
]);
Run Code Online (Sandbox Code Playgroud)

这给了我相同的结果,但我得到了 3 个字段而不是 2 个字段,而第三个字段具有价值 [object Object]

第三次尝试:

const data = array('List of items', [
  {color: '#fa2dac', text: 'RSS'},
  {color: '#fa2dac', text: 'RSS'},
]);
Run Code Online (Sandbox Code Playgroud)

这给我只提交了 [object Object]

如何添加带有对象数组的旋钮并进行全面更新?

javascript reactjs storybook

2
推荐指数
1
解决办法
3413
查看次数

如何使用 styled-icons 输出故事书中的图标列表

目前我正在手动添加图标,但对于几个图标来说,这种方式没有问题。但如果有 100 个图标,这就成了一个真正的问题。我怎样才能使这个可重复使用。所以我可以应用这个元素,这样它就可以是我想要的任何图标。最后它应该看起来像这样。

<Icon icon='login' color="yellow" mr="10px" fontSize="20px" />
Run Code Online (Sandbox Code Playgroud)

<Icon icon='login' color="yellow" mr="10px" fontSize="20px" />
Run Code Online (Sandbox Code Playgroud)

reactjs styled-components storybook styled-system

2
推荐指数
1
解决办法
6989
查看次数

类型上不存在属性“args”(参数:道具)

我不明白为什么我会收到这个错误 Property 'args' does not exist on type (args: Props) => Element

我正在尝试将 args 添加到我的 Storybook 组件中。这是我的.stories.tsx文件的样子

import React from "react";
import { Story, Meta } from "@storybook/react";

import { Props, Button } from ".";

export default {
  title: "General/Button",
  component: Button
} as Meta;

const Template = (args: Props) => <Button {...args} />;

export const PrimaryA = Template.bind({});

PrimaryA.args = {  <-- ERROR
  variant: "primary"
};
Run Code Online (Sandbox Code Playgroud)

以及.tsxButton 组件的简单文件

import { css } from "@emotion/react";
import …
Run Code Online (Sandbox Code Playgroud)

typescript reactjs storybook

2
推荐指数
1
解决办法
937
查看次数