带有 React 组件的策略模式
Strategy pattern with React component
我正在尝试使用 React 组件中的策略模式来呈现不同的功能,而不是仅出于学习目的使用 switch case,但我不确定从哪里开始。
这是个好方法吗?
const renderField = () => {
switch (field) {
case 1:
return first();
case 2:
return second();
default:
return third();
}
};
return <div>{renderField()}</div>;
你只需要使用 React children
。 Strategy Pattern 是一种不需要更改基本组件但从外部动态更改某些行为的方法。
const MyComponent = ({children}) => <div>{children}<div>
<MyComponent><FirstComponent></FirstComponent></MyComponent>
但是,如果您想根据其他一些值传入子代,例如 1, 2, 3
。
您可以创建一个对象来保存它们与组件的关系:
const componentMap = {1: <FirstComponent/>, 2: <SecondComponent/>}
然后像这样使用它:
<MyComponent>{componentMap[index]}</MyComponent>
我正在尝试使用 React 组件中的策略模式来呈现不同的功能,而不是仅出于学习目的使用 switch case,但我不确定从哪里开始。
这是个好方法吗?
const renderField = () => {
switch (field) {
case 1:
return first();
case 2:
return second();
default:
return third();
}
};
return <div>{renderField()}</div>;
你只需要使用 React children
。 Strategy Pattern 是一种不需要更改基本组件但从外部动态更改某些行为的方法。
const MyComponent = ({children}) => <div>{children}<div>
<MyComponent><FirstComponent></FirstComponent></MyComponent>
但是,如果您想根据其他一些值传入子代,例如 1, 2, 3
。
您可以创建一个对象来保存它们与组件的关系:
const componentMap = {1: <FirstComponent/>, 2: <SecondComponent/>}
然后像这样使用它:
<MyComponent>{componentMap[index]}</MyComponent>