Обновление компонента React при использовании реагирующих вкладок - PullRequest
1 голос
/ 08 мая 2019

В моем приложении реакции, когда я делаю обновление на стороне сервера, я возвращаю ответ, который я использую для обновления состояния родительского компонента.Но для моих компонентов, где я использую реагирующие-вкладки, они не обновляются.Вот мой код реакции:

import React, {Component, Fragment} from 'react';
import ReactCSSTransitionGroup from 'react-addons-css-transition-group';

import PageTitle from '../../../Layout/AppMain/PageTitle';

import {
    faAngleUp,
    faAngleDown,
    faCommentDots,
    faBullhorn,
    faBusinessTime,
    faCog
} from '@fortawesome/free-solid-svg-icons';

import {FontAwesomeIcon} from '@fortawesome/react-fontawesome';

import Tabs from 'react-responsive-tabs';

import Roles from './Roles';
import Priviledges from './Priviledges';

export default class Apage extends Component {

    constructor(props) {
        super(props);

        this.state = {
            api: this.props.api,
            session: this.props.session
        }
    }

    componentWillMount() {
        this.tabsContent = [
            {
                title: 'Roles',
                content: <Roles api={this.state.api} session={this.state.session} />
            },
            {
                title: 'Priviledges',
                content: <Priviledges api={this.state.api} session={this.state.session} />
            }
        ];
    }

    getTabs() {
        return this.tabsContent.map((tab, index) => ({
            title: tab.title,
            getContent: () => tab.content,
            key: index,
        }));
    }

    onTabChange = selectedTabKey => {
        this.setState({ selectedTabKey });
    };


    render() {

        return (
            <Fragment>
                    <PageTitle
                        heading="Roles & Priviledges"
                        subheading=""
                        icon="lnr-apartment icon-gradient bg-mean-fruit"
                    />
                    <Tabs selectedTabKey={this.state.selectedTabKey} onChange={this.onTabChange} tabsWrapperClass="body-tabs body-tabs-layout" transform={false} showInkBar={true} items={this.getTabs()}/>
            </Fragment>
        )
    }
}

Я пытался использовать это в своем теге <Roles />:

shouldComponentUpdate(nextProps, nextState) {
   return nextProps.session!= this.props.session;
}

, но не смог заставить его работать на меня.Любая подсказка?Я запускаю свой React JS внутри Laravel, используя Laravel-Mix.Я на самом деле намереваюсь обновить раскрывающийся список всякий раз, когда я отправляю форму, используя setState.Я делал это много раз, когда использую React JSas REST API.

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Я закончил тем, что использовал сокет IO для запуска setSate в моем компоненте после ответа от сервера.Хотя я бы предпочел что-нибудь аккуратнее.

0 голосов
/ 08 мая 2019

Вам нужно изменить, как это - onChange={() => this.onTabChange()}

см. Ниже-

<Tabs onChange={() => this.onTabChange()} selectedTabKey={this.state.selectedTabKey}  tabsWrapperClass="body-tabs body-tabs-layout" transform={false} showInkBar={true} items={this.getTabs()}/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...