import React, { useState } from 'react';
import './MainPart.css';
function MainPart(props) {
const [orderData_, setOrderData_] = useState(props.orderData);
let topicData_ = props.topicData;
let titleData_ = props.titleData;
let infoData_ = props.infoData;
return (
<div className='MainPart'>
<div className='mainWindow'>{getPics(orderData_)}</div>
<div className='information'>
<div className='moreNewsDivs'>
<div className='moreNewsDiv1'>
<h4>MORE NEWS</h4>
</div>
<div className='moreNewsDiv2'>
<button
className='previous-round'
onClick={setOrderData_(previous(orderData_))}
>
‹
</button>
<button href='/#' className='next-round'>
›
</button>
</div>
</div>
<hr />
<div className='topicDiv'>
<h5 className='topicData'>{topicData_}</h5>
<h5 className='titleData'>{titleData_}</h5>
<h6 className='infoData'>{infoData_}</h6>
</div>
</div>
</div>
);
}
function previous(orderData_) {
let newOrderData;
if (orderData_ === 3) {
newOrderData = 2;
console.log(newOrderData);
return newOrderData;
} else if (orderData_ === 1) {
newOrderData = 3;
console.log(newOrderData);
return newOrderData;
} else {
newOrderData = 1;
console.log(newOrderData);
return newOrderData;
}
}
function next(orderData_) {
let newOrderData;
if (orderData_ === 3) {
newOrderData = 1;
} else if (orderData_ === 2) {
newOrderData = 3;
} else {
newOrderData = 2;
}
return newOrderData;
}
const getPics = picOrder => {
if (picOrder === 1) {
return (
<img
src={require('../assets/desktopLarge/mainImage.png')}
className='MainImage'
alt=''
id='mainImage'
/>
);
} else if (picOrder === 2) {
return (
<img
src={require('../assets/desktopLarge/bridge.png')}
className='MainImage'
alt=''
id='mainImage'
/>
);
} else {
return (
<img
src={require('../assets/desktopLarge/forest.png')}
className='MainImage'
alt=''
id='mainImage'
/>
);
}
};
export default MainPart;
我在使用USESTEST
时遇到一个错误。即使加载页面是新鲜的,没有按下任何按钮,我的按钮onClick事件侦听器激活了,正如我之前在主题中提到的,我的错误:
“错误:重新呈现太多。React限制呈现次数以防止无限循环。”
问题可以在onclick
道具中找到:
<button className="previous-round" onClick={setOrderData_(previous(orderData_))}>‹</button>
^
将立即计算花括号之间的所有内容。这将导致在每个呈现循环中调用setOrderData_
函数。
通过用箭头函数包装函数,计算的代码将产生一个函数,每当用户单击按钮时都可以调用该函数。
js prettyprint-override"><button className="previous-round" onClick={() => setOrderData_(previous(orderData_))}
>‹</button>
// Simple example
// JSX: <button>click me</button>
// JS: createElement('button', { children: 'click me' })
createElement("button", { children: "click me" });
// Correct event callback
// JSX: <button onClick={handleClick}>click me</button>
// JS: createElement('button', { onClick: handleClick, children: 'click me' })
createElement("button", { onClick: handleClick, children: "click me" });
// Wrong event callback
// JSX: <button onClick={handleClick()}>click me</button>
// JS: createElement('button', { onClick: handleClick(), children: 'click me' })
createElement("button", { onClick: handleClick(), children: "click me" });
斯塔克布利茨链接。
我试图创建的是一个React组件,当prop boxToggle的值为true时,它有条件地呈现,当用户单击exit按钮时,它也返回null。为了实现这一点,我创建了一个名为displayUI的本地useState,并使用if语句(这可能是问题所在,但我无法指出原因)将displayUI指定为true或false(这取决于boxToggle道具和exit按钮的onClick内部)。 但是我在组件中
常量plusCount=()=>{ 常量minsCount=()=>{ 第二:不要在UI上给我发送错误:太多的重新呈现。React限制呈现次数以防止无限循环。 导出默认应用程序; 猜测:为什么这条消息两次都显示我错误,但第一次让我在UI上显示,第二次不显示我在UI上
呈现以下组件时出现错误: 太多的重放。React限制呈现的数量以防止无限循环。?
有人能帮帮我吗?
当GetCreatorLicense()被禁用时,programe运行良好,我试图在循环之外设置数据,但仍然得到‘错误:太多的重新呈现’。React限制呈现的次数,以防止无限循环。错误,然后我把这个函数放在useEffect下,我只得到控制台输出,但useState没有改变