react-select: 是否可以同时添加动画组件和自定义组件?
react-select: Is it possible to add animated components and custom components simultaneously?
我想知道是否可以在 Select
组件内的 components
道具中同时添加动画组件和自定义组件。
不幸的是,在 react-select 文档中找不到任何内容。
对于“动画组件”,我指的是这些:https://react-select.com/home#animated-components。
“自定义组件”是这些:https://react-select.com/components#replaceable-components
在我的例子中,自定义组件是这个:
// Custom component
const CustomMultiValue = (
props: MultiValueProps<FilterOptions, GroupTypeBase<FilterOptions>>
) => (
<components.MultiValue {...props}>{props.data.label}</components.MultiValue>
);
// Animated components
const animatedComponents = makeAnimated();
Select
看起来像这样:
<Select
isMulti
onChange={(value) => handleChange(value)}
styles={customSelectStyles}
components={{ MultiValue: CustomMultiValue }}
theme={customSelectTheme}
closeMenuOnSelect={false}
placeholder={placeholder}
/>
我尝试了很多方法来添加动画组件,但似乎没有任何效果。
例如:
components={animatedComponents, { MultiValue: CustomMultiValue }}
components={{ MultiValue: CustomMultiValue, Control: animatedComponents }}
有人知道吗?
谢谢!
我假设您想要的是自定义 MultiValue 组件以使其具有动画效果。
您可以在动画组件的文档中看到,makeAnimated
方法为作为参数传递的组件创建包装器并且:
If no arguments are passed, built-in components are wrapped instead.
在您的代码中,这是将要设置动画的内置多值组件
如果这是您想要的,您必须将自定义多值作为参数传递给 makeAnimated
,并在 Select[=17 的 components
道具中使用 animatedComponents
=]
// Animated components
const animatedComponents = makeAnimated({ MultiValue: CustomMultiValue });
...
<Select
isMulti
components={animatedComponents}
...
/>
您可以在这个代码沙箱中尝试,其中多值被动画化并被自定义以显示自定义标签
https://codesandbox.io/s/clever-payne-ehi8t?file=/src/App.tsx
我想知道是否可以在 Select
组件内的 components
道具中同时添加动画组件和自定义组件。
不幸的是,在 react-select 文档中找不到任何内容。
对于“动画组件”,我指的是这些:https://react-select.com/home#animated-components。
“自定义组件”是这些:https://react-select.com/components#replaceable-components
在我的例子中,自定义组件是这个:
// Custom component
const CustomMultiValue = (
props: MultiValueProps<FilterOptions, GroupTypeBase<FilterOptions>>
) => (
<components.MultiValue {...props}>{props.data.label}</components.MultiValue>
);
// Animated components
const animatedComponents = makeAnimated();
Select
看起来像这样:
<Select
isMulti
onChange={(value) => handleChange(value)}
styles={customSelectStyles}
components={{ MultiValue: CustomMultiValue }}
theme={customSelectTheme}
closeMenuOnSelect={false}
placeholder={placeholder}
/>
我尝试了很多方法来添加动画组件,但似乎没有任何效果。 例如:
components={animatedComponents, { MultiValue: CustomMultiValue }}
components={{ MultiValue: CustomMultiValue, Control: animatedComponents }}
有人知道吗? 谢谢!
我假设您想要的是自定义 MultiValue 组件以使其具有动画效果。
您可以在动画组件的文档中看到,makeAnimated
方法为作为参数传递的组件创建包装器并且:
If no arguments are passed, built-in components are wrapped instead.
在您的代码中,这是将要设置动画的内置多值组件
如果这是您想要的,您必须将自定义多值作为参数传递给 makeAnimated
,并在 Select[=17 的 components
道具中使用 animatedComponents
=]
// Animated components
const animatedComponents = makeAnimated({ MultiValue: CustomMultiValue });
...
<Select
isMulti
components={animatedComponents}
...
/>
您可以在这个代码沙箱中尝试,其中多值被动画化并被自定义以显示自定义标签
https://codesandbox.io/s/clever-payne-ehi8t?file=/src/App.tsx