React Concat State

Я не понимаю, что состояние моего folderPathName не обновляется. Я объединяю массив в folderPathName каждый раз, когда нажимается кнопка. Данные из папки верны, но каждый раз, когда я возвращаюсь в папку события, PathNames имеет значение null и не обновлялось с предыдущим состоянием с момента последнего нажатия кнопки.

class Dashboard extends Component {
  constructor(props) {
    super(props)
    this.state = {
      folderPathNames: []
    };
  }


  handleFolderClick = (event,id) => {
    const { folderPathNames } = this.state;
    const folderId = event.currentTarget.dataset["folder"]
    const folder = this.state.model.folderDictionary[folderId]
    let folderPath = [];
    folderPath = folderPathNames.concat([folder])
    this.setState({ ...this.state, folderPathNames: folderPath })
    if (!!folder) {
      this.props.listFolders(folder, this.state.model)
      this.props.listDocument(+folderId, this.state.model)
    }

    this.setState({ enableCheckBox: false })

}

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
0
431
1

Ответы 1

Эта строка, по-видимому, закончится существующими парами "ключ-значение" из this.state, что приведет к дублированию значений для folderPathNames, и я предполагаю, что Javascript выберет первое значение этого ключа?

this.setState({ folderPathNames: folderPath })

Возможно изменить его на:

this.setState({ ...this.state, folderPathNames: folderPath })

Если по какой-то причине вам не нужно передать существующее состояние обратно в вызов setState?

Извините, я не совсем понимаю, что вы говорите. Я пытаюсь добавить папку к folderpathNames при каждом нажатии папки. Итак, что я делаю, это получаю состояние folderpathNames, а затем добавляю в него новую папку. также у вас есть та же строка кода для ее возможного изменения. Спасибо за помощь

Great Khan 2016 17.09.2018 18:14

@ GreatKhan2016 Если я не ошибаюсь, this.state уже имеет форму {folderPathNames: ['some','state']}, поэтому {...this.state, folderPathNames: ['new', 'some', 'state'} будет приравниваться к попытке выполнить {folderPathNames: ['some','state'], folderPathNames: ['new','some','state']}, и интерпретатор javascript проигнорирует второе объявление, как можно скорее.

stef 19.09.2018 14:03

Другие вопросы по теме