简体   繁体   English

Storybook 为单个故事预定义的视口/参数

[英]Storybook predefined viewport/parameters for one single story

I have one story including multiple stories.我有一个故事,包括多个故事。 For one story ( mobile ) I want to predefine its viewport - how can I do so?对于一个故事( mobile )我想预定义它的视口 - 我该怎么做?

That's what I tried:这就是我尝试过的:

import React from "react";
import {Navigation, NavigationProps} from "./navigation";
import {boolean} from "@storybook/addon-knobs";

export default
{
    component: Navigation,
    title: "Molecule/Navigation",
};

export const responsive = () => {
    const props: NavigationProps = {
        isLoggedIn: true,
    }

    return <Navigation {...props} />;
};

export const mobile = () => {
    const props: NavigationProps = {
        isLoggedIn: boolean("Angemeldet", false),
    }

    return <Navigation {...props} />;
};

mobile.paramters = {
    viewport: {
        defaultViewport: "Small mobile"
    }
}

It`s not possible today.今天是不可能的。 If it's important for you, you should create a feature request into the storybook github repository.如果它对您很重要,您应该在故事书 github 存储库中创建一个功能请求。

However, you can create a decorator which will change the viewport addon properties (honestly, I didn't test it)但是,您可以创建一个装饰器来更改视口插件属性(老实说,我没有测试它)

import { useAddonState } from '@storybook/api';

mobile.decorators = [() => {
  const [state, setState] = useAddonState("storybook/viewport");
  if (state?.selected !== 'mobile') {
    setState({ selected: 'mobile', isRotated: false });
  }

  return { template: '<story/>' };
}];

Storybook documented this feature on their site using the vieport addon . Storybook 使用vieport 插件在他们的网站上记录了此功能。

Assuming you already have the viewport addon installed in your project, you can use the default viewports , or a custom one, and set it as default.假设您已经在项目中安装了视口插件,您可以使用默认视口或自定义视口,并将其设置为默认值。

Example default viewports for mobile1 height: 568px, width: 320px mobile1 的示例默认视口高度:568 像素,宽度:320 像素

export const mobile = () => {
    const props: NavigationProps = {
        isLoggedIn: boolean("Angemeldet", false),
    }

    return <Navigation {...props} />;
};

mobile.paramters = {
    viewport: {
        defaultViewport: "mobile1"
    }
}

Example custom viewports示例自定义视口

const customViewports = {
  kindleFire2: {
    name: 'Kindle Fire 2',
    styles: {
      width: '600px',
      height: '963px',
    },
  },
  kindleFireHD: {
    name: 'Kindle Fire HD',
    styles: {
      width: '533px',
      height: '801px',
    },
  },
};

export const mobile = () => {
    const props: NavigationProps = {
        isLoggedIn: boolean("Angemeldet", false),
    }

    return <Navigation {...props} />;
};

mobile.paramters = {
    viewport: {
        viewports: customViewports,
        defaultViewport: "kindleFireHD"
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM