В настоящее время я сохраняю таблицу в this.state
, как вы можете видеть здесь
this.setState({
table:
<div id='link-table' className="table-panel-table" style={{ width: "100%" , height: height - 35, overflow:'auto' }}>
{columns}
{rows}
</div>
});
Затем переменная table
напрямую используется в функции рендеринга для отображения на веб-сайте:
render(){ return (this.state.table) }
(Если по какой-то причине это плохая идея, пожалуйста, сообщите мне)
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я хочу превратить одну из ячеек в поле ввода (и, очевидно, элемент формы над ним), когда вы нажимаете на него. Я хотел бы знать, как лучше всего изменить this.state.table
, чтобы он запускал повторную визуализацию, когда я меняю ячейку.
Если я использую это, это не работает
this.state.table.props.children[1][row].props.children[cell].props.children = form_element;
Насколько я понял, мне нужно использовать this.setState()
, чтобы изменить его соответствующим образом, но мне трудно написать код для таргетинга на указанную c вложенную переменную в this.state.table
.
Я получил
const { table } = this.state;
let temp_table = {...table, props: {...table.props, children: [...table.props.children]}}
но затем застреваю, потому что я не знаю, как продолжить с .children[1][row]