javascript - 如何在 React js 中使用 ref 更改元素的样式
问题描述
所以我正在尝试创建一个排序算法可视化器,我遇到了一个问题,我想用新的随机高度更新循环到列表中的每个 div。
import React, { useState, useRef } from 'react'
import "../styling/Sorting.css";
import Slider from '@material-ui/core/Slider';
function Sorting() {
const [value, setValue] = useState(0);
const changeValue = (event, newValue) => {
setValue(newValue)
}
const barRef = useRef()
function randomHeight(){
var number1 = Math.floor(Math.random(10) * 500);
barRef.current.style.height = number1 + "px";
}
return (
<div className="container">
<nav>
<div className="slider">
<Slider value={value} onChange={changeValue} max={30} valueLabelDisplay="on"/>
</div>
<div className="random_height">
<button onClick={randomHeight}>random</button>
</div>
</nav>
<div className="bars">
{Array.from({ length: value }, (_, i) => <div className="bar" id="bar" ref={barRef} key={i}></div>
)}
</div>
</div>
)
}
export default Sorting
但是,我只能更改当前 div,这是添加到数组中的最后一个 div。
解决方案
您需要管理多个 refs,例如:
import React, { useState, useRef } from "react";
import "../styling/Sorting.css";
import Slider from "@material-ui/core/Slider";
function Sorting() {
const [value, setValue] = useState(0);
const changeValue = (event, newValue) => {
setValue(newValue);
};
const barRef = useRef([]);
function randomHeight() {
barRef.current.forEeach((node) => {
const number1 = Math.floor(Math.random(10) * 500);
node.style.height = number1 + "px";
});
}
return (
<div className="container">
<nav>
<div className="slider">
<Slider
value={value}
onChange={changeValue}
max={30}
valueLabelDisplay="on"
/>
</div>
<div className="random_height">
<button onClick={randomHeight}>random</button>
</div>
</nav>
<div className="bars">
{Array.from({ length: value }, (_, i) => (
<div
className="bar"
id="bar"
ref={(node) => (ref.current[i] = node)}
key={i}
></div>
))}
</div>
</div>
);
}
export default Sorting;
推荐阅读
- javascript - Javascript警报不播放声音文件
- r - ifelse 条件:在前 n 位
- python - 高效的字符串匹配与 SQL 和 Python
- java - 如何在 Fragment 中使用 Google MapView?
- c# - 生成 100 多个 UI 游戏对象的最佳方式
- excel - Microsoft Excel - 将表格组合成一个“合并”表格
- ios - 比较对象领域 Swift
- python - SQLAlchemy 一对多关系映射/连接错误
- google-sheets - Google 表格单元格值不匹配
- mongodb - Mongodb:通过“_id”字段搜索嵌入文档