通过远程异步查找来反应物料表

时间:2019-09-23 17:23:12

标签: reactjs use-effect material-table

我需要根据远程数据设置物料表列的查找。 我尝试过,但是不起作用:

const [authors, setAuthors] = useState([]);
const [state, setState] = React.useState({
    columns: [
        {field: 'id', title: 'ID', editable: 'never'},
        {field: 'title', title: 'Titolo'},
        {
            field: 'author_id',
            title: 'Autore',
            // lookup: {12: 'cesare pavese', 124: 'david mccomb', 3: 'stephen king'},
            lookup: {authors},
        }
    ]
});

useEffect(() => {   
    async function getAuthors() {
        const result = await axios.get(AUTHORS_ALL);
        setAuthors(result.data);
    }

    getAuthors();
}, []);

该远程调用有效,但未设置查找。 你知道是否可以做到?

3 个答案:

答案 0 :(得分:1)

在这种情况下,结果是一个承诺,因此您必须使用.then()才能按以下方式对其进行分配:

useEffect(() => {   
async function getAuthors() {
    const result = await axios.get(AUTHORS_ALL);        
    setAuthors(result.data);  
}
getAuthors();
}, []);

希望有帮助。

答案 1 :(得分:0)

我是这样的:

useEffect(() => {

    async function getAuthors() {
        const result = await axios.get(AUTHORS_ALL);
        return result;
    }

    getAuthors().then(res => {
        console.log(res.data);
        setAuthors(res.data);
    });
}, []);

数据到达正确,但是无论如何查找都没有填写!

答案 2 :(得分:0)

我认为您只需要为其分配一个数组即可,而不是:

{12: 'cesare pavese', 124: 'david mccomb', 3: 'stephen king'}

执行此操作:

['cesare pavese', 'david mccomb', 'stephen king']

通过以下方式获取他们:

setAuthors(Object.values(res.data))