Во-первых, я не знаю, что ваши компоненты должны быть static
методами.Они не должны быть свойствами вашего компонента, они просто должны быть доступны самому классу.Возможно, вы даже захотите, чтобы они были определены вне вашего class
определения вместе, чтобы они никоим образом не были публично доступны.
const CaretDownIcon = () => <FontAwesomeIcon icon="caret-down" />;
// ...other definitions
export class CustomSelectDropDown extends Component {
// ...
render() {
// ... getting whatever prop and state values you need
return (
<Select
{...otherProps}
components={{
Placeholder: MyPlaceholder,
// ... etc, etc
}}
Во-вторых, в вашем CustomDropdownIndicator
вы пытаетесьвставьте компонент React, используя метод, когда все, что вам нужно сделать, это поместить в тег.
const CustomDropdownIndicator = (props) => (
<components.DropdownIndicator {...props}>
<CaretDownIcon />
</components.DropdownIndicator>
);
Я не думаю, что ваша проблема заключалась в том, как вызвать статический метод.ClassWithStaticMethod.staticMethod()
или this.constructor.staticMethod()
- правильный синтаксис.Я думаю, что ваша проблема заключалась в том, что вы пытались вызвать метод в конфигурации components
, а не просто передать эти компоненты без состояния в конфигурацию.
<Select
...
components={{
Placeholder: CustomSelectDropDown.Placeholder,
DropdownIndicator: CustomSelectDropDown.DropdownIndicator
}}
...
/>
При этом статические методы можно вызывать покласс не имеет экземпляра класса, поэтому снова возникает вопрос: «Должен ли это действительно быть static
метод? Или эти биты необходимы только в моем классе?»