Как управлять переключателями с установленным значением в react

#javascript #reactjs

#javascript #reactjs

Вопрос:

У меня есть эта функция, в которой я хочу выводить переключатели. Если значение IsDefault равно true, переключатель должен быть установлен по умолчанию. Но это работает не так, как должно, потому что, когда я нажимаю переключатель, который по умолчанию не отмечен, он не будет выбран или переключится обратно на кнопку IsDefault. Я предполагаю, что это связано с повторным рендерингом, и во время повторного рендеринга переключатель по умолчанию get выбирается повторно. Есть ли способ предотвратить такое поведение? Заранее спасибо.

     const renderUpgrades=(item)=>{
        return item.optionModules.map((optionModule,index)=> {
            console.log(optionModule.module)
            if (optionModule.module amp;amp; optionModule.module.selectionRequired) {
                return(
                    <div>
                        <h4>{optionModule.module.name}</h4>
                        {optionModule.module.options.map((moduleOptions) => {
                                if(optionModule){
                                    return (
                                        <div>
                                            {
                                                moduleOptions.isDefault?
                                                    <div><input type="radio" value={moduleOptions.option.name} name="selectionRequired" checked="checked"/>   {moduleOptions.option.name}</div>:
                                                    <div><input type="radio" value={moduleOptions.option.name} name="selectionRequired"/>   {moduleOptions.option.name}</div>
                                            }
                                        </div>
                                    )
                                }else{
                                    return console.log("No shifts applied");
                                }
                            })
                        }
                    </div>
                )
            }
})
    }
 

Ответ №1:

React примет логическое значение для checked, поэтому вы можете удалить троичный и просто сделать что-то вроде этого:

 <div><input type="radio" value={moduleOptions.option.name} name="selectionRequired" checked={moduleOptions.isDefault}/>   {moduleOptions.option.name}</div>
 

Комментарии:

1. Спасибо за ваш ответ, но результат все тот же. Выбран переключатель по умолчанию, но когда я нажимаю другую переключатель, а затем снова другую переключатель, кнопка по умолчанию будет выбрана.