react-bootstrap-table icon indicating copy to clipboard operation
react-bootstrap-table copied to clipboard

Don't rerender when data is changed.

Open danijel2017 opened this issue 6 years ago • 0 comments

Hello.

Really I can't understand why did not rerender table when data is changed. I added my code in the follow. Really data is updated correctly but table is not rerender. Please teach me if you know this. Thanks.

`import React, { Component } from "react"; import { Link } from "react-router-dom"; import { connect } from "react-redux"; import moment from "moment"; import { BootstrapTable, TableHeaderColumn } from "react-bootstrap-table"; import "../../node_modules/react-bootstrap-table/dist/react-bootstrap-table-all.min.css"; import DatePicker from "./DatePicker"; import Dropdown from "./Dropdown"; import NotesModal from "./NotesModal"; import { updateFile } from "../Actions/FileActions";

class TascAdminTable extends Component { state = { focused: false, data: this.props.data };

componentWillReceiveProps(nextProps) { this.setState({ data: nextProps.data }) }

renderFileDetails = (cell, row) => ( <Link to={details/${row.index}}>{row.fileNumber}</Link> );

renderDatePicker = (cell, row) => { if(row.index == 45) console.log('estClosingDate: ', row.estClosingDate, ' loanStatus: ', row.loanStatus); return ( <DatePicker file={row} /> ) };

renderLoanStatus = (cell, row, formatExtraData, rowIdx) => <Dropdown updateField={this.updateField.bind(this)} file={row} fileIdx={rowIdx} field="loanStatus" />;

renderHoaStatus = (cell, row, formatExtraData, rowIdx) => <Dropdown updateField={this.updateField.bind(this)} file={row} fileIdx={rowIdx} field="hoaStatus" />;

renderNotes = (cell, row) => <NotesModal file={row} />;

updateField(rowIdx, field, value) {

let file = this.state.data[rowIdx];
file[field] = value;
this.setState({ data: this.state.data });

const user =  this.props.user;
const payload = {
  entityId: user.entityId,

  fileNumber: file.fileNumber,
  role: file.role,
  agent: file.agent,
  estClosingDate: file.estClosingDate !== null && file.estClosingDate !== "null" ? moment(file.estClosingDate) : null,
  loanStatus: file.loanStatus,
  hoaStatus: file.hoaStatus,
  notes: file.notes,

  focused: false
};

//console.log('updateField: file: loanStatus:', file['loanStatus'], 'hoaStatus:', file['hoaStatus'], payload);
this.props.updateFile(payload);

}

render() { console.log('updated admin') return ( <BootstrapTable ref="table" data={this.props.data} pagination options={this.props.options} bordered={false} striped containerStyle={{ fontSize: ".8em" }} > <TableHeaderColumn dataField="created" dataSort={true} width="10%"> Created </TableHeaderColumn> <TableHeaderColumn dataField="fid" isKey dataSort={true} dataFormat={this.renderFileDetails} width="10%" > File Number </TableHeaderColumn> <TableHeaderColumn dataField="roleType" dataSort={true} width="9%"> Role </TableHeaderColumn> <TableHeaderColumn dataField="lname" dataSort={true} width="9%"> Last Name </TableHeaderColumn> <TableHeaderColumn dataField="address" dataSort={true} width="12%"> Property Address </TableHeaderColumn> <TableHeaderColumn dataField="status" dataSort={true} width="10%"> preDOCS Status </TableHeaderColumn> <TableHeaderColumn dataField="estClosingDate" dataSort={true} width="10%" dataFormat={this.renderDatePicker} > Est. Closing Date </TableHeaderColumn> <TableHeaderColumn dataField="loanStatus" dataSort={true} width="10%" dataFormat={this.renderLoanStatus} > Loan Payoff Status </TableHeaderColumn> <TableHeaderColumn dataField="hoaStatus" dataSort={true} width="10%" dataFormat={this.renderHoaStatus} > HOA Payoff Status </TableHeaderColumn> <TableHeaderColumn dataField="notes" width="10%" dataFormat={this.renderNotes} > Notes </TableHeaderColumn> </BootstrapTable> ); } }

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

export default connect( mapStateToProps, { updateFile } )(TascAdminTable); `

danijel2017 avatar Mar 18 '19 18:03 danijel2017