据我了解,我可以将refs用于单个元素,如下所示:
const { useRef, useState, useEffect } = React;
const App = () => {
const elRef = useRef();
const [elWidth, setElWidth] = useState();
useEffect(() => {
setElWidth(elRef.current.offsetWidth);
}, []);
return (
<div>
<div ref={elRef} style={{ width: "100px" }}>
Width is: {elWidth}
</div>
</div>
);
};
ReactDOM.render(
<App />,
document.getElementById("root")
);
<script src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
<div id="root"></div>
如何为一系列元素实现此功能?显然不是这样:(即使我没有尝试,我也知道:)
const { useRef, useState, useEffect } = React;
const App = () => {
const elRef = useRef();
const [elWidth, setElWidth] = useState();
useEffect(() => {
setElWidth(elRef.current.offsetWidth);
}, []);
return (
<div>
{[1, 2, 3].map(el => (
<div ref={elRef} style={{ width: `${el * 100}px` }}>
Width is: {elWidth}
</div>
))}
</div>
);
};
ReactDOM.render(
<App />,
document.getElementById("root")
);
<script src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
<div id="root"></div>
我已经看到了这个,因此这个。但是,对于这种简单情况,我仍然感到困惑。
ref最初只是{ current: null }
对象。useRef
在组件渲染之间保留对此对象的引用。current
value主要用于组件引用,但可以容纳任何内容。
在某个时候应该有一组引用。如果渲染之间数组长度可能有所不同,则数组应相应缩放:
const arrLength = arr.length;
const [elRefs, setElRefs] = React.useState([]);
React.useEffect(() => {
// add or remove refs
setElRefs(elRefs => (
Array(arrLength).fill().map((_, i) => elRefs[i] || createRef())
));
}, [arrLength]);
return (
<div>
{arr.map((el, i) => (
<div ref={elRefs[i]} style={...}>...</div>
))}
</div>
);
可以通过解包useEffect
和替换来优化这段代码useState
,useRef
但应注意,通常认为在render函数中产生副作用是一种不好的做法:
const arrLength = arr.length;
const elRefs = React.useRef([]);
if (elRefs.current.length !== arrLength) {
// add or remove refs
elRefs.current = Array(arrLength).fill().map((_, i) => elRefs.current[i] || createRef())
));
}
return (
<div>
{arr.map((el, i) => (
<div ref={elRefs.current[i]} style={...}>...</div>
))}
</div>
);
我正在尝试更新mongob文档中数组中包含的单个子元素。我想使用其数组索引引用该字段(数组中的元素没有任何我可以保证将是唯一标识符的字段)。似乎这应该很容易做到,但我无法弄清楚语法。 这是我想在伪json中做的事情。 之前: 之后: 似乎查询应该是这样的: 但这行不通。我花了很长时间搜索mongodb文档,并尝试了这种语法的不同变体(例如,使用,等等)。我找不到任何关于如何在MongoDB中完成这
我已经创建了一个的数组: 我的问题是现在如何访问其中一个数组的元素。例如,我可以通过以下方式访问(或在示例打印中)整个数组元素: 但是如何访问所拥有的数组中的第一个元素呢?我尝试了所有方法,比如,但当数组是链接列表的元素时,我不知道如何访问数组中的元素。
我正在使用以下xml结构: 只有当代码为“XXX”时,我才需要按ID和代码分组,并求和金额。最后,我的最终输出应该如下所示: 我知道如何通过多个元素进行分组,但我不知道如何通过元素值对分组进行条件化。我不太深入研究xsl,所以我的知识有点缺乏。我尝试过使用以下xsl(无论如何都是最新版本): 我遇到的另一个问题是,我没有完全正确的求和逻辑,但这可能是一个不同的帖子。 任何形式的帮助或指导将不胜感激
问题内容: 如果我们有一个numpy数组,例如: 我们想要设置一个元素,另一个元素 我们该怎么做? 将数组的第一个维度的每个元素设置为5 问题答案: 使用as作为数据数组和索引数组,以便每一行对应于要在数据数组中设置的一个元素,您可以执行以下操作- 样品运行- 或者,我们可以使用计算线性索引,然后使用进行赋值,就像这样- 如果您要处理三维数组,我们可以对三维索引进行切片,然后分配具有另一种方法,如
问题内容: 假设我有以下代码: 现在,我需要在上面,但是在jsFiddle中,您可以看到child元素呈现在before之前。 如果您删除 类 或 ,则一切正常。这是我需要的正确行为: http //jsfiddle.net/ZjXMR/1/ 如何在不删除页面的情况下执行此操作? 问题答案: 这是不可能的,因为子级的设置与父级的堆叠索引相同。 您已经通过从父级移除z-index来解决该问题,将其保
问题内容: 我想找到一种方法来获取元素树的所有子元素,就像这样,因为自python 2.7版本以来已弃用,尽管现在我仍然可以使用它,但我不想再使用它了。 谢谢。 问题答案: 的所有子元素(后代): 一个更完整的示例: 排除根本身: