【问题标题】:Update React Component When Using react-responsive-tabs使用 react-responsive-tabs 时更新 React 组件
【发布时间】:2019-09-25 23:56:30
【问题描述】:

在我的反应应用程序中,当我进行服务器端更新时,我会返回一个响应,用于更新父组件的状态。但是对于我使用 react-responsive-tabs 的组件,它们不会得到更新。 这是我的反应代码:

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>
        )
    }
}

我已经尝试在我的&lt;Roles /&gt; 标签中使用它:

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

但我无法让它为我工作。有什么线索吗? 我正在使用 laravel-mix 在 laravel 中运行我的 React JS。我实际上打算在使用setState 提交表单时更新下拉列表。当我使用 React JS 作为 REST API 时,我已经多次这样做了。

【问题讨论】:

    标签: javascript reactjs laravel


    【解决方案1】:

    你需要像这样 onChange - onChange={() =&gt; this.onTabChange()}

    见下文-

    <Tabs onChange={() => this.onTabChange()} selectedTabKey={this.state.selectedTabKey}  tabsWrapperClass="body-tabs body-tabs-layout" transform={false} showInkBar={true} items={this.getTabs()}/>
    

    【讨论】:

    • 这个答案有点出乎意料。不工作。
    • 你使用过 onChange={() => this.onTabChange() ??
    • 是的。它不起作用,如果我打开一个模式,我会将我的标签切换回第一个
    【解决方案2】:

    在来自服务器的响应后,我最终使用套接字 IO 在我的组件中触发setSate。虽然我更喜欢更整洁的东西。

    【讨论】:

      猜你喜欢
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-13
      • 2020-12-05
      • 1970-01-01
      • 2021-11-01
      • 2017-12-25
      • 2021-11-15
      相关资源
      最近更新 更多