Я использую DEVEXPRESS RECT Table, и вы можете скрыть и показывать столбцы через состояние.

Я хотел бы изменить состояние для скрытого с true на false, но получаю ошибку Uncaught Invariant Violation.

Я пытался использовать SetState, но не работает.

class ResultsTable extends Component {
    constructor(props) {
        super(props);
        this.state = {
        columns: [
            { name: 'agent', title: 'Agent' },
            { name: 'alertGroup', title: 'Alert Group', hidden:true },
            { name: 'manager', title: 'Manager', hidden:true }
            ],
        };
    }


    componentDidMount() {
        this.testAlert();
    }

    testAlert = () => {
        if (this.props.alertgroupColumn()) {
            this.setState({
                columns: [{ name: 'alertGroup', title: 'Alert Group', hidden:false }]
            })
        }
    }

Скрытый должен измениться с true на false.

0
helpmepie 25 Сен 2019 в 13:19

1 ответ

Лучший ответ

У меня есть еще одна альтернатива обновлению вашего состояния

  class ResultsTable extends Component {
        constructor(props) {
            super(props);
            this.state = {
            columns: [
                { name: 'agent', title: 'Agent' },
                { name: 'alertGroup', title: 'Alert Group', hidden:true },
                { name: 'manager', title: 'Manager', hidden:true }
                ],
            };
        }


        componentDidMount() {
            this.testAlert();
        }

        testAlert = () => {
            if (this.props.alertgroupColumn()) {
//---- get the columns from state 
   let columns = JSON.parse(JSON.stringify(this.state.columns))
 columns[1].hidden = false
 this.setState({
      columns:columns 
    })  
                this.setState({
                    columns: [{ name: 'alertGroup', title: 'Alert Group', hidden:false }]
                })
            }
        }
0
Rebai Ahmed 25 Сен 2019 в 11:02