Реагировать на компонент Redux без повторного рендеринга при изменении состояния - PullRequest
0 голосов
/ 28 мая 2018

Как убедиться, что вы инициировали изменение состояния и перехватили его в компоненте?

У моего приложения есть действие, которое вызывается щелчком в компоненте фильтра.Этот фильтр выполняет поиск и возвращает новые продукты (на основе фильтра).

Действие работает и, используя расширение React Chrome, я вижу, как меняется общее состояние продуктов.Однако я не могу получить новое состояние в своем shopComponent, которое изменит отображаемые продукты на основе нового состояния продукта ..: (*

class shopProduct extends Component {

    constructor(props) {
        super(props);
        this.state = {...localStateItems }
    }

    render() {
        if(this.props.products != undefined) {
          console.log('not undefined: ', this.props.products);
          // NOTHING IS SHOWING
        }
        console.log('shopProducts Render: ', this.props);
        // NOTHING IS SHOWING

        return (
            ...Some new products
        )
    }
}

const mapStateToProps = (state, ownProps) => ({
    cart: state.cart,
    products: state.products
});

shopProduct.propTypes = {
    productSearch: PropTypes.func.isRequired,
    products: PropTypes.object
};

export default connect(mapStateToProps, { productSearch, products })(shopProduct);

Правильно ли я сопоставляю это с компонентом shopProduct?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

OK.Таким образом, причина, по которой это не было рендерингом, заключается в том, что мы использовали неизменяемый JS .
Так что для всех, у кого есть проблемаПроверьте, использует ли это ваше приложение.

Просто укажите объект state.get('objectName')

ВПРАВО:

const mapStateToProps = (state) => ({
   products: state.get('products')
});

-

НЕПРАВИЛЬНО:

const mapStateToProps = (state, ownProps) => ({
    cart: state.cart,
    products: state.products
});
0 голосов
/ 28 мая 2018

Я думаю, вы неправильно понимаете, каким должен быть второй параметр, передаваемый connect.Согласно документам должно отображатьсяDispatchToProps.Вы пытаетесь передать свои propTypes, а это не то, что ожидает второй параметр.Возможно, вы захотите прочитать о , что mapDispatchToProps для .

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