如何添加li的激活状态

如何添加li的激活状态,第1张

在V6版本以下,Link标签会有activeStyle属性或者activeClassName属性,这两个属性都可以设置router激活状态时Link的样式,即当前页面为Link所指页面时Link的样式。

但是,在V6中,使用这两个属性会出现报错如图,会提示找不到该方法。

报错

提示说可以把其中的大写改成小写,但是这个方法是错误的,并不能达到我们想要的效果。

解决

在V6中,已经删除了activeStyle属性以及activeClassName属性。官方给出了正确的向Link标签添加激活样式方法,可戳:custom-link-example

关键部分如下:

function CustomLink({ children, to, props }: LinkProps) {

let resolved = useResolvedPath(to);

let match = useMatch({ path: resolvedpathname, end: true });

return (

<div>

<Link

style={{ textDecoration: match "underline" : "none" }}

to={to}

{props}

>

{children}

</Link>

{match && " (active)"}

</div>

);

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

实际上就是自定义了一个函数CustomLink,然后通过useResolvedPath和useMatch去引入路径并判断当前页是否是该路径,若是,则match为true,相应的textDecoration赋上了 "underline"值;否则,textDecoration为“none”。

在我的项目中,我将官方代码稍作修改即可

import '/css/stylecss'

import sdulogo from "/img/sdulogopng";

import as React from "react";

import {

Link,

useMatch,

useResolvedPath,

} from "react-router-dom";

export default function Header() {

return(

<header id="header">

<nav id="navbar" className="navbar">

<ul>

{/这里将Link改为CustomLink,其余不变/}

<li><CustomLink to="/">首页</CustomLink></li>

<li><CustomLink to="/canvas">描摹</CustomLink></li>

</ul>

</nav>

</header>

)

}

function CustomLink({ children, to, props }) {

let resolved = useResolvedPath(to);

let match = useMatch({ path: resolvedpathname, end: true });

return (

<div>

{/若当前为激活状态,则link颜色为**,否则不设置颜色/}

<Link

style={{ color: match "#ffc107" : "" }}

to={to}

{props}

>

{children}

</Link>

</div>

);

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

要注意几点:

在IDE中引用useResolvedPath和useMatch可能会有灰线提示:“Cannot resolve symbol ‘useMatch’”,不过不会影响实际运行

官方给的代码是TypeScript,我这里写的是JavaScript,没有太大的区别。主要是CustomLink函数的参数从{ children, to, props }: LinkProps改成{ children, to, props },且不需导入LinkProps。这其实是因为TypeScript的函数传递的参数需要指明参数的类型,也就是{ children, to, props }都是LinkProps类型的。

点击阅读全文

Li锂元素核外电子数为3,外围电子构型是2S1,与同周期元素比有较大原子半径和较少的核电荷,故其金属晶体中金属键不牢固,单质的熔、沸点较低,硬度较小。锂是所有金属中最轻的。

化学性质上表现为易失电子,成为Li+, 而Li+的半径远小于同族其他阳离子,锂的化合物具有一定程度的共价性。Li的标准电极电势很低,仅为-3045。这不仅是因为Li是活泼的碱金属,同时还因为Li的原子半径小,易与水分子结合生成水和离子,释放出较多能量。因此Li的失电子倾向很强。

锂的一些反应的化学反应方程式叙述如下:

4 Li + O₂ = 2 Li₂O (反应条件:自发反应,或者加热,或者点燃)(燃烧猛烈)

6 Li + N₂ = 2 Li₃N(反应条件:自发反应,或者加热,或者点燃)

2 Li + S = Li₂S (该反应放出大量热,爆炸!)

2 Li + 2 H₂O = 2 LiOH + H₂↑(现象:锂浮动在水面上,迅速反应,放出氢气)

2 Li + 2 CH₃CH₂OH(乙醇) = 2 CH₃CH₂OLi(乙醇锂) + H₂↑

4 Li + TiCl₄ = Ti + 4 LiCl

2 Li + 2 NH₃(l) = 2 LiNH₂ + H₂↑

你的想法和你的代码有矛盾啊:

点击checkbox之后checkbox是选中状态的,再去执行li的onclick事件checkbox又回到了未选中状态,这是个死循环来的

var ckBtn=documentgetElementById("aaa");

ckBtnonclick=function(){

    select();//checkbox自带onclick事件,这里相当于执行了两次select()

}

//这就是:点击checkbox去执行li中的onclick事件

想要实现和li的onclick一样的效果,再执行一次select就行了

var ckBtn=documentgetElementById("aaa");

ckBtnonclick=function(){

    select();

    select();

}

第一条规则:

拆分解释:

input、ol都为标签选择器,选择标签名为input和ol的所有标签

:checked,选择勾选状态的元素(input为checkbox的,并且已经勾选)

+为兄弟选择器,代表+两侧的元素是前后紧邻的

整体解释:选择紧邻前面的标签为选中的checkbox(input type=checkbox)的ol标签(选择器选的是ol而不是input)

第二条规则:

拆分解释:

input、ol、li为标签选择器

>子元素选择器,表示>之前的元素是后面元素的父级元素

整体解释:选择被选中的input紧邻的ol元素的子元素li

举例,下面的li会匹配input:checked + ol > li

<input type="checkbox" />

<ol>

    <li>选择的是这个元素,前提是上面的checkbox已经被勾选了</li>

</ol>

以上就是关于如何添加li的激活状态全部的内容,包括:如何添加li的激活状态、Li锂元素的性质及其反应特征类型(详细)、点击checkbox怎么去执行li中的onclick事件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10149992.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存