絵本` args `と` parameter `を使ったグローバルなデコレータの制御
6303 ワード
Storybook decorators (反応で)複数のストーリー間でコンポーネント環境を再利用する強力な方法を提供します.しかし、個々の物語からグローバルデコレータを操作するための任意のオフ棚レバーがありません.
仕事中we're hiring! ) 私は最近、多くのコンテキストプロバイダを1つにクリーンアップしました
私はStorybookコミュニティでこれのためにどんな既存の戦略も見つけることができませんでしたinversion of control : 個々の物語は、機能を
したがって、ストーリーブックコントロールを介してグローバルなデコレータ/プロバイダの状態に影響を与えたい場合は以下のようにします. 良いol '純粋なコールバック関数を使用してください グローバルデコレータのコールバック関数をチェックする コールバックがあれば、それを起動し、結果を それに応じて更新データをパスします. 楽しむ!
仕事中we're hiring! ) 私は最近、多くのコンテキストプロバイダを1つにクリーンアップしました
Base
デコレータ.簡単な例を示します.// .storybook/decorators/base.tsx
export const Base: DecoratorFn = (Story, options) => {
return (
<TestReactRoot {...options.args}>
<Story {...options} />
</TestReactRoot>
);
};
// .storybook/preview.js
import { Base } from './decorators/base';
export const decorators = [Base];
TestReactRoot
カプセルを含むいくつかのプロバイダreact-redux
プロバイダ.だから今では簡単に話を書くことができますuseSelector
そして、最小限のボイラー板で他のreduxフック.しかし、どのように言うか、最初のredux状態を話から設定しますBase
デコレータ?具体的には、絵本を使いたいですcontrols を動的に設定する.私はStorybookコミュニティでこれのためにどんな既存の戦略も見つけることができませんでしたinversion of control : 個々の物語は、機能を
args
グローバルなデコレータが起動する設定.// ./storybook/decorators/base.tsx
export const Base: DecoratorFn = (Story, options) => {
const { args, parameters } = options;
if (parameters.modifyArgs) {
Object.assign(args, parameters.modifyArgs(args));
}
return (
<TestReactRoot {...args}>
<Story {...options} />
</TestReactRoot>
);
};
// src/components/user-avatar.stories.tsx
export default {
title: "User Avatar",
args: {
admin: false,
},
parameters: {
modifyArgs: (args) => {
return {
reduxState: generateReduxState({ admin: args.admin })
}
}
}
}
ブーム!ストーリーの設定だけでは、純粋な機能を渡すことができます知っているmodifyArgs
, とBase
デコレータは、戻り値をどうするかを決定します.したがって、ストーリーブックコントロールを介してグローバルなデコレータ/プロバイダの状態に影響を与えたい場合は以下のようにします.
args
を使う設定args
を返します.args
オブジェクト.args
オブジェクト(またはどんな部分も突然変異を必要とします).Reference
この問題について(絵本` args `と` parameter `を使ったグローバルなデコレータの制御), 我々は、より多くの情報をここで見つけました https://dev.to/tmikeschu/controlling-global-decorators-via-args-in-storybook-41lfテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol