Установка значений ранее инициализированных переменных с использованием синтаксиса деструктурирования объекта

Моя ситуация такова, что у меня есть несколько переменных, которые я хочу установить - однако их значения зависят от другой переменной. Так вот что я имею в виду

var {
      columns,
      rows,
      tableColumnExtensions,
      sorting,
      editingRowIds,
      addedRows,
      rowChanges,
      currentPage,
      deletingRows,
      pageSize,
      pageSizes,
      columnOrder,
    } = this.props.apiurlsTable

    if (this.props.tableType==="dependencies") {
      var {
        columns,
        rows,
        tableColumnExtensions,
        sorting,
        editingRowIds,
        addedRows,
        rowChanges,
        currentPage,
        deletingRows,
        pageSize,
        pageSizes,
        columnOrder,
      } = this.props.dependenciesTable
    }

Я использую переменные, объявленные позже, поэтому объявлять их всегда в условных выражениях было бы бесполезно, потому что они не будут видны остальной области действия функции. Приведенный выше код действительно работает, но выдает предупреждение "переменная уже определена, без переопределения". Мне нравится использовать синтаксис деструктурирования объектов, и я бы предпочел не разделять каждую переменную на отдельную строку (например, columns = this.props.dependenciesTable.column). Мне было интересно, есть ли способ условно установить переменные в JavaScript?

Или есть другой подход, который будет работать...

1 ответ

Решение

Сделай это:

var objectToDestructureFrom =
    this.props.tableType === "dependencies" ? this.props.dependenciesTable : this.props.apiurlsTable;

var {
    columns,
    rows,
    tableColumnExtensions,
    sorting,
    editingRowIds,
    addedRows,
    rowChanges,
    currentPage,
    deletingRows,
    pageSize,
    pageSizes,
    columnOrder,
} = objectToDestructureFrom
Другие вопросы по тегам