为啥我的 IF 不返回组件 <Item_burger />?

Posted

技术标签:

【中文标题】为啥我的 IF 不返回组件 <Item_burger />?【英文标题】:Why my IF don’t return component <Item_burger />?为什么我的 IF 不返回组件 <Item_burger />? 【发布时间】:2019-12-12 07:54:50 【问题描述】:

我有汉堡的菜单)有不同的项目,结果我想从不同的标题打开不同的组件)

const MenuItems = props => 
    const  title, price, composition  = props;
    let myComponent = require(`../` + `img/` + `$title` + `.png`);
    const onClick=()=>
        if(title!=='burger')
            return (<Item_burger />)
            console.log(title)
        

    
        return (
            <div className="col-sm-6">
                <img className="card-img-top mb-5" src=myComponent />
                <div className="card shadow-sm">
                    <div className="card-body text-center">
                        <h3>
                            <strong>title</strong>
                        </h3>
                        <p className="card-text">
                            <strong>composition</strong>
                        </p>
                        <h4>price</h4>
                        <Link to=`burger/constructor/$title`> 
                        <button type="submit" className="btn btn-outline-light" onClick=onClick>Go to Lab of taste =></button>
                        </Link>
                    </div>
                </div>
            </div>
        )
    

【问题讨论】:

事件处理程序中的返回无处可返回。您正在寻找的预期行为是什么? &lt;Link&gt; 内带有 onClick 的按钮也没有意义 你会想了解条件渲染:reactjs.org/docs/conditional-rendering.html 您可能希望&lt;Item_burger /&gt; 在与链接路径关联的路由中呈现。建议大家学习一些路由器教程和文档中的例子 也发布您的路线。 你的onClick 没有用,因为你已经用Link 包裹了你的button。一旦点击它就不会等待执行您的onClick 函数并直接重定向到burger/constructor/$title 路径。你应该有 Route 来处理这个路径。 【参考方案1】:

我很确定您的 onClick 确实返回了 &lt;Item_burger /&gt; 组件,但未使用此返回值。您应该使用react-routerburger/constructor/$title 的路由下显示Item_burger 组件。参考https://reacttraining.com/react-router/web/example/basic。

顺便说一下,不要混合插值和连接,如下:

let myComponent = require(`../` + `img/` + `$title` + `.png`);

可以写成:

let myComponent = require(`../img/$title.png`);

此外,您不应在 &lt;Link&gt; 中使用 &lt;button&gt; - Linka。不过,您可以设置 Link 的样式,使其看起来像一个按钮。

【讨论】:

【参考方案2】:

谢谢大家)我不明白,为什么开始工作)我会做同样的事情)也许?这是因为我有一点练习)但我正在努力......

【讨论】:

以上是关于为啥我的 IF 不返回组件 <Item_burger />?的主要内容,如果未能解决你的问题,请参考以下文章

无法弄清楚为啥我的 if 语句不起作用:( if array[i] << average)

为啥当我更改路由时组件不呈现?

为啥我的函数 if/else if/else if 语句返回相同的答案?

为啥 if 语句迭代返回模棱两可的系列 bool?

为啥 `useContext` 不重新渲染我的组件?

为啥这个 if 语句不返回布尔值?