小编Shu*_*ang的帖子

如何在 Solid.js 中使用 Ref?

所以我正在学习并开始使用Solid.js,我想知道我们如何处理solid.js中的ref,就像react中的useRef一样。

我检查文档我尝试这样的事情:

      let navigationOuterRef: HTMLDivElement
      let navigationRef: HTMLUListElement
    
     const MenuNavbar = (props: {layoutDatas: LayoutNavigation[]}) => {
        
       const [priorityItems, setPriorityItems] = createSignal<LayoutNavigation[]>(props.layoutDatas);
      
      //....
    
      return (
        <div ref={navigationOuterRef} class="....">
          <ul ref={navigationRef} class="...">
            <For each={priorityItems()}>
              {(labelName) => (
                <li class="flex items-center cursor-pointer">
                  {labelName.label}
                </li>
              )}
            </For>
          </ul>
        //...
Run Code Online (Sandbox Code Playgroud)

它有效...但我收到了警告消息,例如

createRoot在or之外创建的计算render永远不会被处理

所以我认为问题是我在组件外部创建了引用,因此如果没有适当的上下文,如果卸载它就无法处理它,但是如果我在组件中移动了引用声明,我在 TS 中会出现此错误

变量“navigationOuterRef”在分配之前使用。

那么我做错了什么以及正确的方法是什么?

solid-js

4
推荐指数
1
解决办法
2714
查看次数

学习Javascript中的forEach方法时出现的问题

我从一周开始学习 Javascript,并尝试对循环进行一些练习,因此我尝试创建一个函数,每次调用它时,我都会将数组中的数字加倍。

我设法用经典的“for”循环来做到这一点,如下所示:

var numbers = [2, 5, 37, 500, 75]; 

function getDoubled() {
  for (var i = 0; i < numbers.length; i++) {
    (numbers[i] = numbers[i] * 2);
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,每次调用该函数时,数组中的数字都会翻倍getDoubled();,现在我尝试对方法执行相同的forEach操作。

var numbers = [2, 5, 37, 500, 75];

function getDoubled(array) {
  array.forEach(function(number) {
    (number = number * 2);
  })
}
Run Code Online (Sandbox Code Playgroud)

但是当我调用该函数时,我无法更改数组getDoubled(numbers),但是如果我使用 进行测试console.log(number*2),它会在控制台中工作,所以我无法找出错误。

javascript

1
推荐指数
1
解决办法
112
查看次数

标签 统计

javascript ×1

solid-js ×1