簡體   English   中英

無法在React組件中設置狀態

[英]Can not set a state in a react component

我有一個反應成分。 我想在此組件中設置狀態,該狀態將向下傳遞給子組件。 我對此有參考錯誤,我不確定為什么。

export const WidgetToolbar: React.FC<{}> = () => {

    this.state = {
        targetBox:null,
    }

    const isOpen = useBehavior(mainStore.isWidgetToolbarOpen);
    const themeClass = useBehavior(mainStore.themeClass);

    const userDashboards = useBehavior(dashboardStore.userDashboards);

    const [filter, setFilter] = useState("");
    const [sortOrder, setSortOrder] = useState<SortOrder>("asc");

    const userWidgets = useMemo(() => {
        let _userWidgets = values(userDashboards.widgets).filter((w) => w.widget.isVisible);

        if (sortOrder === "asc") {
            _userWidgets.sort((a, b) => a.widget.title.localeCompare(b.widget.title));
        } else {
            _userWidgets.sort((a, b) => b.widget.title.localeCompare(a.widget.title));
        }
        if (!isBlank(filter)) {
            _userWidgets = _userWidgets.filter((row) => {
                return row.widget.title.toLowerCase().includes(filter.toLocaleLowerCase());
            });
        }
        return _userWidgets;
    }, [userDashboards, sortOrder, filter]);
    ...

這是我得到的錯誤:

TypeError: Cannot set property 'state' of undefined
    at WidgetToolbar (WidgetToolbar.tsx?ba4c:25)
    at ProxyFacade (react-hot-loader.development.js?439b:757)

功能組件中沒有thisthis.state 使用useState掛鈎,類似於您在下面的幾行中所做的。

export const WidgetToolbar: React.FC<{}> = () => {
    const [targetBox, setTargetBox] = useState<null | whateverTheTypeIs>(null);

    //...

}

功能性React組件不能具有狀態。 您必須使用基於類的組件才能獲得狀態。

https://guide.freecodecamp.org/react-native/functional-vs-class-components/

您在該函數中使用了掛鈎來“使用狀態”: const [filter, setFilter] = useState("");

您可以對targetBox進行相同的操作,而不是嘗試在不存在的“ this”上設置屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM