【问题标题】:Trouble checking if props is undefined检查道具是否未定义时遇到问题
【发布时间】:2021-01-11 20:56:19
【问题描述】:

所以我的项目中有一个页面,它有一个 get,然后它将响应传递给一个 const,如下所示。

const [reference, setReference] = useState([])   
 
useEffect(() => {
            api.get(`/${props.route.params.index}`).then( response => {
                setReference(response.data)
                setLegendaryAction(response.data.legendary_actions)
            }).catch( error => 
                console.log(error) 
            )
        }, [])

然后我将引用的不同部分传递给同一组件的多个实例。 如下例,有reference.action 和reference.reaction。我总会有一个动作,但有时 Reaction 是未定义的,所以我在渲染组件之前检查它是否为真。

                <ReferenceDetails 
                    detailTitle="Actions" 
                    details={reference.actions}
                />
                {reference.reactions && 
                    <ReferenceDetails 
                         detailTitle="Reactions" 
                         details={reference.reactions}
                    />
                }

但它给了我这个错误:

错误:文本字符串必须在组件内呈现。

但是当我执行 console.log(reference.reactions) 时,它返回未定义。 有人可以在这里阐明一下吗?

【问题讨论】:

  • 如果注释掉reactions部分,错误就消失了吗?
  • 不,它仍然会发生。如果我评论细节,那么它就消失了
  • 能否添加ReferenceDetails组件的代码?

标签: android reactjs react-native undefined


【解决方案1】:

console.log(reference.reactions) 最初应该给出 undefined 然后给出期望值。您是否尝试过 console.log(reference?.reactions) ? 或者,console.log(reference && reference.reactions)

【讨论】:

  • 所以,在某些情况下它给出了预期值,但正如我所说,有时它不会有值,所以它只是给我 undefined
猜你喜欢
  • 2021-04-21
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 2018-09-19
  • 2019-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多