所以这是我的第一个组件,我减速我的路线。我决定做两个导航项目。做了一些造型。但我得到的错误,许多重新渲染。因为我尝试添加带有悬停效果的样式。我不想使用css。这是我的代码:
import React, { useState } from 'react';
import { BrowserRouter, Route, Switch, Link } from 'react-router-dom';
import logo from './logo.svg';
import './App.css';
import Products from './Screens/ProductsList';
import Preview from './Screens/Product';
import ProductCreate from './Screens/ProductCreate';
import ProductEdit from './Screens/ProductEdit';
import Home from './Screens/Home';
function App() {
const [hover, setHover] = useState(false);
return (
<BrowserRouter>
<div style={style.navigationContainer}>
<Link
onMouseEnter={setHover(true)}
onMouseLeave={setHover(false)}
style={hover ? style.hoverNavItem : style.navItem}
to="/products"
>
Products List
</Link>
<Link
onMouseEnter={setHover(true)}
onMouseLeave={setHover(false)}
style={hover ? style.hoverNavItem : style.navItem}
to="/products/create"
>
Create Product
</Link>
</div>
<Switch>
<Route
key="edit-product"
path="/products/:id/edit"
component={ProductEdit}
></Route>
<Route
key="add-product"
path="/products/create"
component={ProductCreate}
></Route>
<Route key="preview" path="/products/:id" component={Preview}></Route>
<Route key="products" path="/products" component={Products}></Route>
<Route exact path="/" component={Home}></Route>
</Switch>
</BrowserRouter>
);
}
export default App;
您需要在类似以下事件的情况下触发函数:onMouseOver={()=
您需要向onMouseEnter
和onMouseLeave
传递一个函数,该函数将在触发这些事件时调用setHover
函数
改变
onMouseEnter={setHover(true)}
onMouseLeave={setHover(false)}
到
onMouseEnter={() => setHover(true)}
onMouseLeave={() => setHover(false)}
执行onmouseinter={setHover(true)}
将立即调用setHover
函数并更新状态,而不是等待onmouseinter
事件。因此,您的代码陷入了更新状态和重新渲染的无限循环中
虽然,如果您只是想在悬停上的任何元素上应用一些样式,那么使用CSS比您试图做的要好得多。当组件悬停在上面时,不需要重新渲染组件,只是为了更新它的样式。
还请记住,由于当悬停
为true时,您正在将样式应用于两个链接
组件,因此如果您将鼠标悬停在其中一个链接
组件上,它会将悬停
设置为true,并且两个链接
组件都将被设置样式。
我有一个组件,它需要获取数据,将其设置为state,然后将其传递给子级。一些数据还需要在上下文中设置。我的问题是,使用useEffect,一旦调用API,它将为我需要执行的每个setvalue()函数重新呈现。我已经尝试传递useffect一个空的[]数组,由于状态正在改变,仍然得到相同数量的重新渲染。此时数组包含集合。。。用于防止eslint抛出警告的函数。 有没有更好的方法来避免如此多的重新渲
有一个案例我很困惑。 我有一个对象redux状态:{show:true,creative:{name:'a',tags:[t1,t2,t3]}。此对象已通过“react redux”的“connect”功能映射到道具。 当我改变属性“显示”或“creative.name”时,它确实会触发重新渲染。但是如果我将t0追加到"creative.tags",它就不会运行re-渲染。 我必须分配一个新变量来
考虑规范的示例: 单击按钮使每个状态打印两次。为什么呢?
如何防止以下错误: 太多的重新渲染。React限制渲染的数量,以防止无限循环。' 我刚刚将一个基于类的组件更改为功能组件,但它不起作用 我的源代码 我只是将一个基于类的组件更改为功能组件,我得到了这些错误。 0个 如何防止以下错误: 太多的重新渲染。React限制渲染的数量,以防止无限循环。'
我对react还比较陌生,我一直在分解一个web应用程序,并用react组件替换部分。我现在正在开发一个组件,其中包含我创建的几个不同组件。 在新组件中,我在componentDidMount函数中进行API调用,并创建子组件。乍一看,一切看起来都很完美,但当我们在其中一个子组件中进行状态更改,然后在父组件中进行更改时,子组件将其状态重置为更改之前的状态。 我知道发生了什么,州政府没有被传递给家长
我正在编写文本输入,并在事件中调用,因此React重新呈现我的UI。问题是文本输入总是失去焦点,所以我需要为每个字母重新聚焦:D。