小编Alf*_*red的帖子

Nextjs动态路由渲染两次

如果我转到“ 当我检查控制台时”,一旦我未定义,然后是正确的 ID(在本例中为 5),pages/user/[id].jsx 我的[id].jsx 包含中就有一条动态路由。这是怎么回事,有办法解决吗?console.log(useRouter().query.id);url/user/5

next.js

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

警告:React 检测遇到错误:错误:找不到光纤“SvgCheck”的 ID

我有一个状态,根据它是真还是假,我会显示不同的 svg 图标,尽管我注意到状态之间的切换导致出现此错误:警告:反应检测遇到错误:错误:找不到光纤“SvgCheck”的 ID ,我在 public/static/icons 中有我的图标,所有 svg 文件都在这里,然后我有 index.js,我在其中导入这些图标,然后像这样导出

import Check from './check.svg'
export {
...
Check,
}
Run Code Online (Sandbox Code Playgroud)

然后我将它们导入为:

import {Check} from "public/static/icons"
Run Code Online (Sandbox Code Playgroud)

我用它们作为 <Check/>

为了让我像这样使用它,我在 next.config.js 中使用了 svgr 插件,我有:

module.exports = {
    webpack(config) {
      config.module.rules.push({
        test: /\.svg$/,
        use: ["@svgr/webpack"]
      });
  
      return config;
    }
  };
Run Code Online (Sandbox Code Playgroud)

我最近才开始收到这个警告,以前从未见过。

reactjs next.js

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

隐藏元素而不是 onBlur() 的更好选择是什么?

我创建了一个自定义的可搜索下拉列表,当我专注于输入时,我会显示该下拉列表,如果我单击其他地方,则通过设置使用 onBlur() 管理该下拉列表的状态来隐藏该下拉列表。问题是当我单击下拉元素以选择一个选项时,在触发事件之前关闭下拉列表,我在 setShowDropdown 设置为 false 之前添加了 100 毫秒的超时,但我不太满意,我想知道什么是更好的方法?

  const [selected, setSelected] = useState("");
  const [searchValue, setSearchValue] = useState("");
  const [showDropdown, setShowDropdown] = useState(false);
Run Code Online (Sandbox Code Playgroud)

下拉元素:

 <li
          key={el}
          className={clsx(
            "custom-select__dropdown-item p-3 cursor-pointer flex justify-between hover:bg-fmc-blue-2 hover:text-white duration-300",
            selected === el ? "bg-fmc-blue-2 text-white" : "bg-white text-gray-500"
          )}
          onClick={() => {
          
            setSelected(el);
            setSearchValue("");
           
          }}
        >
          {el}
          <ChevronRight className="ml-2 text-fmc-blue-2" />
        </li>
Run Code Online (Sandbox Code Playgroud)

我设置是否显示下拉列表的输入:

  <input
              type="text"
              onChange={(e) => setSearchValue(e.target.value.trim())}
              className="w-full mr-3 border-none h-full outline-none"
              placeholder={placeholder}
              onFocus={setShowDropdown.bind(null, true)}
              onBlur={() =>
                setTimeout(() => {
                  setShowDropdown(false);
                }, …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

5
推荐指数
0
解决办法
43
查看次数

标签 统计

next.js ×2

reactjs ×2

javascript ×1