我有两个div,在同一个组件的同一个位置上有广告。它们都有一个名为decesionmaker1和decesionmaker2的道具。
<div className="billboard">
<Adinjection
adtype="billboard"
configobject={Siteconfig.userfinder.billboard}
decisionmaker2={true}
/>
</div>
<div className="bigbillboard">
<Adinjection
adtype="bigbillboard"
configobject={Siteconfig.userfinder.bigbillboard}
decisionmaker1={true}
/>
</div>
两个道具都是true(decesionmaker2={true})。我把这个道具交给了“控制组件”。然后我有一个下面的使用状态
const [ showbillboard, setshowbillboard ] = useState(false);
使用这个useState和一个随机数,我将其存储在一个变量中
const thesecrandom = Math.floor(Math.random() * 10 + 1);
我试图根据randomnumber的值,在其中一个div上随机设置状态以随机显示它们:useeffect看起来:
useEffect(() => {
console.log("thesecrandom", thesecrandom);
if (thesecrandom > 5) {
if (decisionmaker1) {
setshowbillboard(true);
setAdSpotvisible(true);
} else if (thesecrandom < 5) {
if (decisionmaker2) {
setshowbillboard(true);
setAdSpotvisible(true);
} else {
setshowbillboard(true);
}
}
} else {
setshowbillboard(true);
}
if (scrollactiv) {
window.onscroll = () => {
//setOffset(window.pageYOffset)
if (window.pageYOffset > 1200) {
setAdSpotvisible(true);
setshowbecause(true);
} else {
setAdSpotvisible(true);
setshowbecause(false);
}
};
} else {
setshowbecause(true);
}
}, []);
返回语句看起来:
return (
<div>
{visible && showbecause && showbillboard ? (
<div style={divstyleBlock}>
<iframe
id={configobject.id}
name={configobject.name}
src={currentAd.src}
frameBorder="no"
scrolling="no"
width={configobject.width}
height={configobject.height}
allow="autoplay"
ref={(el) => (myRef.current = el)}
onLoad={(onload) => {
// console.log("the frame is loaded ");
setAdSpotvisible(true);
}}
onError={(onerror) => {
// console.log("my fram is not loaded ");
setAdSpotvisible(false);
head1a.appendChild(Pixelscript);
}}
/>
</div>
) : (
<div style={divStyleNone} ref={(el) => (mySecREf.current = el)} />
)}
<Adblockerdetection />
</div>
);
使用此代码,组件上其他每个广告的显示状态也会随机显示。我在decisionmaker1 decisionmaker2和decisionmaker2上尝试了几个小时的if语句的其他组合,但我找不到解决方案。有人能帮我吗?
我想展示其中一个。
那么您不应该在组件本身内部管理它。尤其是当你只在那个地方需要这个的时候
const bigbillboard = React.useMemo(() => Math.random() < 0.5, []);
{ bigbillboard ? (
<div className="bigbillboard">
<Adinjection
adtype="bigbillboard"
configobject={Siteconfig.userfinder.bigbillboard}
/>
</div>
) : (
<div className="billboard">
<Adinjection
adtype="billboard"
configobject={Siteconfig.userfinder.billboard}
/>
</div>
) }
和关于window.onscroll
onscroll工作正常,没有什么可定制的。
标记的下一个实例可能会覆盖滚动处理程序。或者你在另一个(完全不相关的)组件中以同样的方式实现另一个滚动处理程序,它会覆盖这个,现在继续调试它。最好这样写:
useEffect(() => {
if (!scrollactiv) {
setshowbecause(true);
return;
}
const handler = () => {
//setOffset(window.pageYOffset)
if (window.pageYOffset > 1200) {
setAdSpotvisible(true);
setshowbecause(true);
} else {
setAdSpotvisible(true);
setshowbecause(false);
}
};
addEventListener("scroll", handler);
// And remove your event-listener when they are no longer needed;
// or the component unmounts.
// That's something you didn't do either.
return () => {
removeEventListener("scroll", handler);
};
}, [scrollactiv]);
我不熟悉React钩子和React 16.13.1。 我将实现能够处理登录的Auth组件。 但是它似乎没有正确更新状态,即使使用响应对象调用。 这个代码有什么问题?
我正在尝试使用注册功能组件中的useState更新组件的状态。当用户输入无效的电子邮件地址并单击“提交”按钮时,以下代码将返回错误消息 我想用这段代码将错误消息设置为formData。 如何将错误消息设置为formData? 这是我的密码:
我是javascript新手,这可能是一个简单的问题。。。 我在这里所做的是修改div(#box)的css样式,这取决于你所在页面的位置( 我试图实现的是向#box添加多个css更改,并每次执行一个随机更改。例如,每次从最顶端滚动通过200,div的显示高度为:绿色背景为“100px”,蓝色背景为“200px”,或红色背景为“300px”。希望这有意义。。。。
问题内容: 我想在两个小十进制数字之间获取一个随机数。 在0.8到1.3之间。 要么 谢谢! 问题答案: 斯威夫特5: 使用random(in :) 返回指定范围内的随机值: 每个苹果: random()静态方法从范围内的连续均匀分布中选择一个随机值,然后将该值转换为该类型中最接近的可表示值。 请参阅random(in:using:)以指定默认值以外的随机生成器。
问题内容: 我有一列称为,我希望每一行都保存一个随机日期,该日期距当前时间为-2天。 我正在运行以下查询,但它使用相同的随机日期更新所有行。我希望每一行都是随机的,并且不一样。 任何想法将不胜感激。 问题答案: 使用表达式代替查询: