首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组的元素在console.log中定义,但未在return语句中定义

数组的元素在console.log中定义,但未在return语句中定义
EN

Stack Overflow用户
提问于 2021-03-27 06:41:13
回答 3查看 33关注 0票数 0

我正在尝试访问一个道具的元素。我可以使用console.log访问元素,但不能在return中访问。

代码语言:javascript
复制
function Viewer(props) {
// Step 1: Viewer receives a prop called "json".
    
const Footer = (props) => {
        console.log(props.json.lines[1]) // Step 3: This successfully logs the second element of the array.
        return (
            { props.json.lines[1] } // Step 4: "TypeError: props.json is undefined" (but it's not) 
        )
    }

    // Step 2: Viewer calls Footer, passing prop.json to Footer.
    return (
        <main>
            <Footer
                json={props.json}
            />
        </main>
    )
}

这段代码看起来很简单,但并不能正常工作。即使对元素单词执行console.log操作,尝试返回该元素也会产生TypeError: props.json is undefined

EN

回答 3

Stack Overflow用户

发布于 2021-03-27 07:18:49

Emile的评论导致了解决方案。我通过以下方式解决了这个问题:

从单独的view.

  • Redeclaring页脚中的主file.

  • Importing页脚移回主视图中的
  1. ,并将主视图的道具传递给新导入的页脚。

我不知道为什么会这样。

票数 1
EN

Stack Overflow用户

发布于 2021-03-27 07:05:30

尝试在这个props变量中添加一些验证:

代码语言:javascript
复制
return (
    <main>
        <Footer
            json={props.json && props.json}
        />
    </main>
)
票数 0
EN

Stack Overflow用户

发布于 2021-03-27 07:11:55

我得到了一个与你提到的类型错误不同的错误。

代码语言:javascript
复制
error: unknown: Unexpected token, expected "," (8:20)

   6 |         return (
   7 |             // Step 4: "TypeError: props.json is undefined" (but it's not) 
>  8 |              { props.json.lines[1] }
     |                     ^
   9 |         )
  10 |     }
  11 | 

如果将{ props.json.lines[1] }更改为<main>{ props.json.lines[1] }<main>,则可以看到已经定义了json。

原因可能是,从组件返回的应该是react元素对象,但{props.json.lines[1]}是事件而不是对象。

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

https://stackoverflow.com/questions/66825164

复制
相关文章

相似问题

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