Я не понимаю, что состояние моего 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.state, что приведет к дублированию значений для folderPathNames, и я предполагаю, что Javascript выберет первое значение этого ключа?
this.setState({ folderPathNames: folderPath })
Возможно изменить его на:
this.setState({ ...this.state, folderPathNames: folderPath })
Если по какой-то причине вам не нужно передать существующее состояние обратно в вызов setState?
@ GreatKhan2016 Если я не ошибаюсь, this.state уже имеет форму {folderPathNames: ['some','state']}, поэтому {...this.state, folderPathNames: ['new', 'some', 'state'} будет приравниваться к попытке выполнить {folderPathNames: ['some','state'], folderPathNames: ['new','some','state']}, и интерпретатор javascript проигнорирует второе объявление, как можно скорее.
Извините, я не совсем понимаю, что вы говорите. Я пытаюсь добавить папку к folderpathNames при каждом нажатии папки. Итак, что я делаю, это получаю состояние folderpathNames, а затем добавляю в него новую папку. также у вас есть та же строка кода для ее возможного изменения. Спасибо за помощь