参加直播会话:周四,美国东部时间上午 11 点,Storybook 9 发布 & AMA

切换 ltr-rtl

在 Github 上查看

storybook-rtl-addon

一个 Storybook 插件,允许用户在 ltr 和 rtl 之间切换。

Example

安装

安装以下 npm 模块

npm i --save-dev storybook-rtl-addon

或使用 yarn

yarn add -D storybook-rtl-addon

然后,将以下内容添加到 .storybook/main.js 中

module.exports = {
  stories: ['../**/*.stories.[tj]sx'],
  addons: ['storybook-rtl-addon'],
};

Story 集成

使用 hook 获取当前方向

import { useDirection } from 'storybook-rtl-addon';

function MyComponent(context) {
  const direction = useDirection(context);
  return <div dir={direction}>{children}</div>;
}

或使用 addDecorator

import { addDecorator } from '@storybook/react';
import { withDirection } from 'storybook-rtl-addon';

addDecorator(withDirection);

您也可以按如下方式监听方向改变事件

import addons from '@storybook/addons';
import { Direction_MODE_EVENT_NAME } from 'storybook-rtl-addon';

// get channel to listen to event emitter
const channel = addons.getChannel();

// create a component that listens for the event change
function MyComponent({ children }) {
  // this example uses hook but you can also use class component as well
  const [direction, setDirection] = useState();

  useEffect(() => {
    // listen to direction change
    channel.on(Direction_MODE_EVENT_NAME, setDirection);
    return () => channel.off(Direction_MODE_EVENT_NAME, setDirection);
  }, [channel, setDirection]);

  return <div dir={direction}>{children}</div>;
}

选项

  • setDirectionKnob

setDirectionKnob

当设置为 true 时,knob-direction 将被设置。

// preview.js
export const parameters = {
  setLocaleToKnob: true,
};