首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取未定义的属性(读取“概念”)

无法读取未定义的属性(读取“概念”)
EN

Stack Overflow用户
提问于 2022-10-07 19:10:25
回答 1查看 85关注 0票数 0

解决方案:尽管加载已经完成,但查询中的“数据”没有及时到达以检查Autocomplete组件的options属性。自动完成组件的最后代码:

代码语言:javascript
复制
<Autocomplete
                    multiple
                    disabled={loadingConcepts}
                    value={narrowerConceptsV || null}
                    onChange={(event, newNarrowerConcepts) => {
                      setNarrowerConcepts(newNarrowerConcepts);
                    }}
the solution >>>>   options={!loadingConcepts && data ? data.concepts : []}
                    getOptionLabel={(option) => option.name}
                    renderInput={(params) => (
                      <MDInput {...params} variant="outlined" label="Narrower Concepts" />
                    )}
                  />

原文:

我正试图从我的neo4j auraDb中提取一个概念名称列表。我曾经让它工作过一段时间,但有一次我开始重新抓取,有些地方出了问题,现在不管我做什么,我都会出错。错误发生在下面的react组件中。

错误信息:

代码语言:javascript
复制
<index.js:165 Uncaught TypeError: Cannot read properties of undefined (reading 'concepts')>
<react_devtools_backend.js:4026 The above error occurred in the AddConcept component:>
<index.js:165 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'concepts')>

所讨论的代码(全部位于同一个文件中)。

gql和阿波罗吊钩:

代码语言:javascript
复制
    import { gql, useMutation, useQuery } from "@apollo/client";
    
    const GET_CONCEPTS = gql`
        query GetConcepts {
          concepts {
            uid
            name
          }
        }
      `;

const { loadingConcepts, errorConcepts, data, refetch } = useQuery(GET_CONCEPTS, {
    fetchPolicy: "network-only",
  });

反应成分。错误是由“data.concepts”引起的。

代码语言:javascript
复制
                 <Autocomplete
                    multiple
                    disabled={loadingConcepts}
                    value={broaderConceptsV || null}
                    onChange={(event, newBroaderConcepts) => {
                      setBroaderConcepts(newBroaderConcepts);
                    }}
                    options={loadingConcepts ? [] : data.concepts}
                    getOptionLabel={(option) => option.name}
                    renderInput={(params) => (
                      <MDInput {...params} variant="outlined" label="Broader Concepts" />
                    )}
                 />

此自动完成组件位于具有提交函数的MUI表单中。如果我为上面的data.concepts输入任何有效的对象,这里的console.log将准确地输出数组。提交函数的代码:

代码语言:javascript
复制
const handleSubmit = async (e) => {
e.preventDefault();
createConcepts({
  variables: {
    uid: uuidv4(),
    name: nameRef.current.value,
    block: blockV,
    addedBy: user.uid,
  },
});
console.log(data.concepts);
refetch(data); };
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-07 19:45:37

也许你的data还没到..。尝试将组件封装在三元操作符上,如:{ data ? <Autocomplete .../> : <p>Test></p>}

也许你的data在那里,但概念不是.因此,尝试在访问data.something时使用三元操作符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73991721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档