为什么 React 功能无法在 Chrome 和 Opera 上运行?

Why does React functionality not working on Chrome and Opera?

我用 React 制作了一个单页应用程序,一切都很好,直到我在所有主要浏览器上测试它。

我在开发过程中使用了 Mozilla,但后来我在其他浏览器上尝试了它,它在 Edge、Explorer 和 Mozilla 上工作,但在 Chrome 和 Opera 上没有。所有 UI 的东西都工作正常,所有与设计相关的东西都表现良好,除了我用 React 制作的功能。因此,单击选项下拉菜单中的“膳食类型”,页面上应该会出现另一个列表,用这 3 个部分(博客、食谱、提示)替换最初的列表。该应用程序应该通过单击 Cookie 部分和再次单击 Horse 部分来进一步扩展。正如我所说,除了在 Chrome 和 Opera 中,所有这些都工作正常。我想让 React 像我在 Chrome 和 Opera 中描述的那样运行。

这是一个link文件

https://github.com/cristiAndreiTarasi/React_App

我希望在单击“膳食类型”选项时,应用程序会在 Chrome 和 Opera 浏览器中使这些附加部分显示在下方 - 就像在其他浏览器中一样 - 并找出问题所在。

在您的 Header.jsx 和 Footer.jsx 文件中,您多次使用 class 而不是 className,因此您应该更正:https://reactjs.org/docs/faq-styling.html

你的问题是你在 <option> 元素上注册了一个 onClick,而你应该在 <select> 元素本身上使用 onChange 道具,而不是<option> 元素。

 <select onChange={this.handleChange} className="custom-select mb-3">
    <option selected>All</option>
    <option value="mealType">Meal Type</option>
    <option>Ingredients</option>
    <option>World Cuisine</option>
    <option>Cooking Style</option>
 </select>

您的事件处理程序如下所示:

handleChange = (event) => {
 this.setState({
  [event.target.value]: true,
 });
}

你的状态不应该像现在这样持有整个 React 组件,而是尝试这样的事情:

state = {
 mealType: false,
}

你的渲染看起来像这样:

{this.state.mealType && <MealType click={this.handleClickTwo}/>}

作为一般规则:状态应包含组件的事件处理程序可能更改以触发 UI 更新的数据。 this.state 应该只包含表示您的 UI 状态所需的最少数据量。有关更多详细信息,请参见此处:http://web.archive.org/web/20150419023006/http://facebook.github.io/react/docs/interactivity-and-dynamic-uis.html