简体   繁体   English

React 列表组件不呈现

[英]React List Components not Rendering

I am trying to render a list of Folders in React using the GET function in JQuery.我正在尝试使用 JQuery 中的 GET 函数在 React 中呈现文件夹列表。 This is my code:这是我的代码:

function HorizontalNav() {
    return (
        <nav className="navbar navbar-expand-lg">
            <div className="container-fluid">
                <div className="navbar navbar-collapse">
                    <ul className="navbar-nav me-auto">
                        <li className="nav-item me-3">
                            <a className=""><i className="bi bi-gear-fill"></i></a>
                        </li>
                        <li className="nav-item dropdown">
                            <a className="dropdown-toggle"><i className="bi bi-paint-bucket"></i></a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
        );
}

function FolderList() {
    var m = [];
    $.get('get_folders', function(data) {
        for (let x of data.folders) {
            m.push(x);
        }
    });
    return <ul>{m.map((y) => { return <li>{y.name}</li>; })}</ul>;
}

function App() {
    return (
        <div className="p-5">
            <HorizontalNav/>
            <div className="mt-3" id="folders">
                <FolderList/>
            </div>
        </div>
        );
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App/>);

Every time I load the page, nothing happens.每次我加载页面时,都没有任何反应。 All I see is the HorizontalNav and not the list of Folders.我所看到的只是 HorizontalNav 而不是文件夹列表。 FYI I'm using Flask on the backend, and the above code is JSX.仅供参考,我在后端使用 Flask,上面的代码是 JSX。

You should check out the State and Lifecycle topic in the React documentation.您应该查看 React 文档中的状态和生命周期主题。

To get and save the data on initialization, I recommend the useEffect and useState hooks.要在初始化时获取和保存数据,我推荐使用useEffectuseState挂钩。
The useEffect hook corresponds to react's combined lifecycle methods componentDidMount , componentDidUpdate and componentWillUnmount . useEffect钩子对应于 React 的组合生命周期方法componentDidMountcomponentDidUpdatecomponentWillUnmount
With useState the data can be saved in the local state.使用useState可以将数据保存在本地状态中。 Appropriate getters and setters are provided for this purpose.为此提供了适当的 getter 和 setter。

function HorizontalNav() {
    return (
        <nav className="navbar navbar-expand-lg">
            <div className="container-fluid">
                <div className="navbar navbar-collapse">
                    <ul className="navbar-nav me-auto">
                        <li className="nav-item me-3">
                            <a className=""><i className="bi bi-gear-fill"></i></a>
                        </li>
                        <li className="nav-item dropdown">
                            <a className="dropdown-toggle"><i className="bi bi-paint-bucket"></i></a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
    );
}

const { useState, useEffect } = React;

function FolderList() {
    const [folders, setFolders] = useState([]);
    useEffect(() => {
        $.get('/folders', function(data) { setFolders(data.folders) });
    }, []);

    return (
        <ul>{folders.map((x, i) => { return <li key={i}>{x.name}</li> })}</ul>
    );
}

function App() {
    return (
        <div className="p-5">
            <HorizontalNav/>
            <div className="mt-3" id="folders">
                <FolderList />
            </div>
        </div>
    );
}

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App/>);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM