Как обернуть класс в компонент высшего порядка? - PullRequest
0 голосов
/ 24 сентября 2019

Мне было интересно, смогу ли я обернуть компонент класса внутри hoc, который также имеет класс.

import React, { Component } from "react";
import { View } from "react-native";
import { Toast } from "react-native-easy-toast";
const withToast = EnhancedComponent => {
    return class HOC extends Component {
        render() {
            return (
                <View>
                    <EnhancedComponent {...this.props} toast={(message, duration) => this.toast.show(message, duration)} />
                    <Toast
                        ref={toast => {
                            this.toast = toast;
                        }}
                    />
                </View>
            );
        }
    };
};
export default withToast;

Я использую этот hoc, и теперь я передаю такой компонент класса, какэто:

import React, { Component } from "react";
import withToast from "../../hoc/withToast";
import Btn from "react-native-micro-animated-button";
class Login extends Component<Props> {
render() {
            return <Btn title="Login" onPress={() => this.props.toast("logged in")} />;
        }
    }
export default withToast(Login);

Когда я запускаю его, я получаю эту ошибку:

Invariant Violation: Invariant Violation: Invariant Violation: Element type is invalid: expected a string 
(for built-in components) or a class/function (for composite components) but got: undefined. 
You likely forgot to export your component from the file it's defined in, or you might have 
mixed up default and named imports.
Check the render method of `HOC`

Возможно ли это как-то?

Спасибо!

1 Ответ

0 голосов
/ 24 сентября 2019

Разобрался.Я импортировал import { Toast } from "react-native-easy-toast"; вместо import Toast from "react-native-easy-toast";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...