Пишу приложение на wails (golang + react).
Делаю кнопку сброса настроек.
Код родителя выглядит следующим образом:
export default function Settings() {
const [generalSettings, setGeneralSettings] = useState(null);
const [proxySettings, setProxySettings] = useState(null);
useEffect(() => {
async function fetchSettings() {
const settings = await GetGeneralSettings();
console.log(settings.generalSettings)
setGeneralSettings(settings.generalSettings);
setProxySettings(settings.proxySettings);
}
fetchSettings();
}, []);
if (!generalSettings || !proxySettings) {
return (
<div className='size-full bg-[#177FB6] dark:bg-neutral-800'>
<LoadingWindow/>
</div>
)
}
return (
<div className="size-full bg-[#177FB6] dark:bg-neutral-800 flex flex-col items-center">
<header>
<AppInfo/>
</header>
<div>
<div className="h-[33rem] w-[66rem] bg-blue-50 dark:bg-zinc-900 rounded-xl flex flex-col items-center">
<SettingsBlocks
setGeneralSettings={setGeneralSettings}
setProxySettings={setProxySettings}
proxySettings={proxySettings}
generalSettings={generalSettings}/>
<div className='flex flex-col gap-y-2.5 pt-16'>
<SaveSettingsButton
generalSettings={generalSettings}
proxySettings={proxySettings}/>
<ResetSettingButton
setGeneralSettings={setGeneralSettings}
setProxySettings={setProxySettings}
/>
</div>
</div>
</div>
</div>
)
}
Код ResetSettingsButton:
function ResetSettingButton({ setGeneralSettings, setProxySettings }) {
const [successMessage, setSuccess] = useState(false);
const defaultGeneralSettings = {
threadCount: 20
};
const defaultProxySettings = {
useProxy: false,
proxyType: "",
proxyFilePath: ""
};
const resetSettings = () => {
ChangeSettingsValue("generalSettings", defaultGeneralSettings);
ChangeSettingsValue("proxySettings", defaultProxySettings);
setGeneralSettings(defaultGeneralSettings);
setProxySettings(defaultProxySettings);
setSuccess("Настройки сброшены")
}
return (
<label className='inline-flex w-80 h-11 cursor-pointer'>
<button className='hidden size-full'></button>
<span className='group size-full flex items-center justify-center gap-x-2.5 text-cyan-600 text-sm font-semibold bg-white rounded-full hover:bg-rose-600 hover:text-white transition-colors' onClick={resetSettings}>
Сбросить
</span>
{successMessage && <SuccessPopup message={successMessage} onSuccess={setSuccess}/>}
</label>
)
}
Но при нажатии на кнопку файл настроек изменяется, но визуально на экране ничего не меняется, хотя я ведь использую стейт из родителя. Функции GetGeneralSettings и ChangeSettingsValue - функции из бека, они абсолютно точно работают. Если перейти на другое окно и вернуться в настройки - настройки становятся дефолтными, но мне нужно, чтобы они менялись непосредственно по нажатии на кнопку и я совсем не понимаю, что я делаю не так.