代码之家  ›  专栏  ›  技术社区  ›  Sam

在JSX中调用Props调用无效语法错误

  •  1
  • Sam  · 技术社区  · 3 年前

    我正在创建一个函数组件,它必须仅在某些变量不为空的情况下呈现。我想将确定组件是否直接在组件本身中渲染的逻辑合并在一起(以清理父组件)。

    组件渲染函数的存在形式为:

    return(
        {
            props.var1 && props.var2 &&
            (<div ...
                </div>
            </div>)
        }
    )
    

    但是,我遇到一个语法错误,指向中的点('.') props.var1 带有消息:

    Unexpected token, expected "," 
    

    如果我删除 props.var1 && ,我在上遇到了同样的错误 props.var2

    为什么会发生这种情况,我该如何规避?

    1 回复  |  直到 3 年前
        1
  •  2
  •   mochaccino    3 年前

    要基于条件进行条件渲染,您应该先检查条件并返回null:

    // DeMorgan's laws (!(a && b) is the same as !a || !b)
    if (!props.var1 || !props.var2) return null;
    

    然后像往常一样返回要渲染的内容:

    return (
        <div>...</div>
    );
    

    出现错误是因为括号( {} )让JS相信您正试图返回一个对象。