0

我正在构建一个项目概述应用程序,并且正在使用 React-Native-calendar。我还创建了两个按钮来过滤日历。我正在获取数据(API),我正在将数据映射到“markedDates”的对象。一切正常运行。现在每个按钮的 onPress 将对象分配给要过滤的状态。这也有效。不起作用的是那些被标记的日期,肯定是正确的,在应用程序加载时没有显示。但是,当我单击按钮而不是加载时会显示它们。粗略的代码顺序:

const [meineTermine, setMeineTermine] = useState([]);
const [dates, setdates] = useState([]);
const [markedFinal, setMarkedFinal] = useState({});

useEffect(() => {
   const unsubscribe = db.collection("Dates").onSnapshot(snapshot => (
        setdates(
            snapshot.docs.map((doc) => ({
            id: doc.id,
            data: doc.data(),
        })))
    ))
    const filter = db.collection("Dates").where("involv", "==", auth.currentUser.displayName).onSnapshot(snapshot => (
        setMeineTermine(
            snapshot.docs.map((doc) => ({
                id: doc.id,
                data: doc.data(),
        })))
    ))
    return unsubscribe && filter;
  }, [])

let markedDayAll = {};
let markedDayMe = {};

{dates.map(({data: {anfang}}) => (
    markedDayAll[anfang] = {
      selected: true
  }
  ))}

{meineTermine.map(({data: {anfang}}) => (
    markedDayMe[anfang] = {
        selected: true
  }
))}


<View>
   <Button onPress={setMarkedFinal(Object.assign({}, markedDayAll))}/>
   <Button onPress={setMarkedFinal(Object.assign({}, markedDayMe))}/>
   <CalendarList
      markedDates={ markedFinal }
      onDayPress={() => navigation.navigate("ViewDate")}
   />
</View>

我试图将数据映射到 useEffect 中不起作用的对象。我还尝试在 state 中设置默认值,但这也不起作用。我错过了什么?我需要按什么顺序设置代码,因为它可以工作,只是没有加载。我需要在哪里实现“setMarkedFinal”以便它在加载时显示?

4

0 回答 0