Состояние реакции не устанавливается (переустанавливается) после изменения в базе данных Firebase и возврата его исходного состояния - PullRequest
0 голосов
/ 17 мая 2019

Я хочу сбросить состояние после изменения в базе данных Firebase. Мой код выглядит так:

 const [lists, setLists] = useState({});

 //GET THE DATA FOR THE LISTS
  useEffect(() => {
    async function fetchData() {
      let dataObject = {};
      await listsRef.once('value', snap => {
        snap.forEach(function(result) {
          firebase
            .database()
            .ref('lists')
            .child(result.key)
            .on('value', snap => {
              dataObject[snap.val().id] = snap.val();
              setLists(dataObject);
            });
        });
      });
    }
    fetchData();
  }, [props.ListUpdated]);

  return Object.getOwnPropertyNames(lists).length > 0 ? (
    <React.Fragment>
      <StyledMain role="main">
        <Layout currentUser={currentUser}>
          {Object.keys(widgets).map(key => {
            return (
              <Card
                id={widgets[key].typeId}
                key={widgets[key].typeId}
                type={widgets[key].type}
                UserIndicator="right"
              >
                <CardContent scrollbar={false}>
                  {createComponent(lists)}
                </CardContent>
              </Card>
            );
          })}
        </Layout>
      </StyledMain>
    </React.Fragment>
  ) : (
    <div>Loading</div>
  );

Но после того, как в базе данных Firebase произошли изменения, списки не устанавливаются и показывают его начальное состояние.

Почему состояние не сбрасывается с новыми значениями из БД?

...