我刚刚创建了我的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转换导入的模块,但事实并非如此。
我的问题是:
我的胆量说,git+ssh://git@bitbucket.org/myusername/storybook-repo.git
从中导入整个故事书package.json
不是一个好主意。有更好的解决方案吗?
Lerna仅在我可以发布我的软件包的公共/专业仓库中工作是真的吗?
为什么Next.js不转译导入的jsx模块?此时,此过程如何工作?我应该从远程存储库中移植故事书组件,还是从主应用程序中完成工作?
谢谢
我已经创建了一个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) 我想使用 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) 如果我为以下组件创建故事,我只会收到几条红框内的消息,其中不包含任何我可以从中获得任何见解的信息:
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) 我找到了这个答案,但我无法用它解决问题。
我尝试在 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_
. 那也没用。
关于我能做些什么来克服这个问题有什么想法吗?
我想写故事书装饰器。有没有办法preview.js
用打字稿来写它?
我已经成功地在 TS 中编写故事本身,现在想在 TS 中编写故事书配置。
这是我的组件的样子
<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 字符串并正确呈现它。
我想为我的 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]
如何添加带有对象数组的旋钮并进行全面更新?
目前我正在手动添加图标,但对于几个图标来说,这种方式没有问题。但如果有 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)
我不明白为什么我会收到这个错误 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)
以及.tsx
Button 组件的简单文件
import { css } from "@emotion/react";
import …
Run Code Online (Sandbox Code Playgroud)