【问题标题】:setState in a .map is giving an infinite refresh loop.map 中的 setState 提供无限刷新循环
【发布时间】:2021-08-12 16:38:49
【问题描述】:

我的渲染中有以下内容

<select name="ip" id="ip" onChange={(e) => handleChange(e)}>
                            {redisServers.servers[config.ENV].map(i => {
                                if (i.default) {
                                    setSelectedServer(i.ip + ":" + i.port)
                                    return <option selected value={i.ip + ":" + i.port}>{i.label}</option>
                                } else if (!i.default) {
                                    return <option value={i.ip + ":" + i.port}>{i.label}</option>
                                }
                            })}
                        </select>

问题是,如果我添加 setSelectedServer() 来设置状态,我会收到一个无限循环。我不知道为什么会这样。

条件只触发一次。

handlechange 是一个简单的 console.log

  const handleChange = (event) => {
        let value = event.target.value
        setSelectedServer(value)
    }

我在地图里面做setstate,一开始就设置默认选择值

【问题讨论】:

标签: reactjs


【解决方案1】:

在使用效果中设置默认选择

useEffect(() => {
    const selected = redisServers.servers[config.ENV].find(i => i.default)
    if(selected)
    setSelectedServer(selected.ip + ":" + selected.port)
}, [])

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    相关资源
    最近更新 更多