Функция не вызывается при изменении состояния - PullRequest
1 голос
/ 14 июля 2020

У меня есть функция в react showPeople. Это код:

const showPeople = () => {
    const people = workers.map((worker, i) => {
        return (
            <div>
                <Worker
                    id={worker.id}
                    index={i}
                    role={worker.role}
                />
            </div>
        )
    })
    return people;
}

Позже в компоненте я хочу вызвать эту функцию, чтобы показать мне некоторую информацию для рабочих. Я называю это так:

<div>
  {showPeople()}
</div> 

И это нормально, но вызывается только один раз. Когда я меняю состояние, это не вызывается. Так что обновления появляются только после того, как я обновляю sh страницу. Если я уберу скобку в вызове, у меня ничего не будет на экране. Кто-нибудь знает в чем проблема? Извините, если этот вопрос повторяется, я не уверен, что понял какой-либо из предыдущих ответов, связанных с его топи c. Спасибо

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Отредактируйте свою функцию, чтобы она принимала воркеров в качестве параметра:

const showPeople = (workers) => {
 const people = workers.map((worker, i) => {
    return (
        <div>
            <Worker
                id={worker.id}
                index={i}
                role={worker.role}
            />
        </div>
    )
})
return people;
}

И передавайте воркеров из состояния. он будет отображаться с новыми рабочими.

0 голосов
/ 14 июля 2020

Как написано, он должен обновляться при обновлении состояния ( см. Пример здесь ). Если у вас нет массива workers, сохраненного, например, как const {workers} = this.state или const [workers, setWorkers] = useState([{'id': '1', role: 'thisRoleNAme'}]), вы, возможно, не имеете доступа к части состояния.

...