Контейнер и компонент одного класса

Я новичок в React и Redux,

Я пытаюсь использовать класс в качестве контейнера Redux (поэтому состоянием управляет редуктор), а также классический компонент с другим экземпляром (без ссылки на редуктор)

Итак, в основном что-то вроде этого:

class BaseLogo extends Component {

    constructor(props){
        super(props);
    }

    render(){
        let link = this.props.linkLogo || this.props.link;
        return (
            <Link className="btn btn-primary" to={link}>
                {this.props.logoName}
            </Link>
        );
    }
}

function mapStateToProps(state){
    return {
        linkLogo: state.linkLogo
    };
}

let Logo = connect(mapStateToProps)(BaseLogo);
export {Logo, BaseLogo as Button};

Итак, я хочу использовать логотип как контейнер и кнопку как компонент (без редуктора) с указанным реквизитом.

Но так как Redux привязывает его, всякий раз, когда я создаю экземпляр класса Logo, будет редьюсер.

Можно ли как-то изолировать connect()() от самого класса?

Спасибо.


person Quoc-Hao Tran    schedule 21.07.2017    source источник
comment
Вы выбрали очень запутанный способ называть вещи в этом модуле. Почему бы не изменить class Logo на что-то вроде class BaseLogo, чтобы вам не приходилось запутанно менять местами имена в конце на export ... as?   -  person Jordan Running    schedule 21.07.2017
comment
В нынешнем виде ваш вопрос не ясен. Этот модуль будет экспортировать два класса: Logo (также известный как logo1), который является классом, подключенным к Redux, и Button, который представляет собой простой React.Component без подключения к Redux. Если вам не нужен компонент, подключенный к Redux, импортируйте Button вместо Logo.   -  person Jordan Running    schedule 21.07.2017
comment
Да, я отредактирую имя. Но проблема здесь в том, что даже если я импортирую кнопку, она разделяет состояние логотипа (потому что она все еще подключается к редюсеру из-за connect)   -  person Quoc-Hao Tran    schedule 21.07.2017
comment
Нет, это не так. Кнопка никак не связана с вашим магазином Redux или редукторами. Подключен только Logo Redux. Это что говорят документы: он не изменяет переданный ему класс компонента; вместо этого он возвращает новый подключенный класс компонента, который вы можете использовать.   -  person Jordan Running    schedule 21.07.2017
comment
спасибо, это из-за моей плохой реализации, я нашел ошибку   -  person Quoc-Hao Tran    schedule 21.07.2017


Ответы (1)


Я нашел ошибку, это связано с плохой реализацией в коде. Спасибо вам всем

person Quoc-Hao Tran    schedule 21.07.2017