Javascript React UseEffect挂钩-挂钩内的值更新,但组件主体内的值更新

Javascript React UseEffect挂钩-挂钩内的值更新,但组件主体内的值更新,javascript,reactjs,typescript,react-hooks,Javascript,Reactjs,Typescript,React Hooks,我正在使用字体选择器react软件包使用Google字体API呈现字体 每次从下拉列表中选择新字体时,我都想使用它来更新字段值。 目前,在useEffect挂钩中,“值”正确更新。但是,当控制台在组件主体中记录“值”时,这不会更新,我不知道为什么。 export function FontPickerInputField<T = any>({ field }: FontPickerSidebarProps<T>) { const placeholderFont:

我正在使用字体选择器react软件包使用Google字体API呈现字体
每次从下拉列表中选择新字体时,我都想使用它来更新字段值。
目前,在useEffect挂钩中,“值”正确更新。但是,当控制台在组件主体中记录“值”时,这不会更新,我不知道为什么。

export function FontPickerInputField<T = any>({ field }: FontPickerSidebarProps<T>) {
    const placeholderFont: string = 'Open Sans';
    const [fontFamily, setFontFamily] = useState(placeholderFont);
    let { value, name } = field;
    const fontFormat: string = fontFamily.replace(/\s/g, '+');
    const updatedFont = `https://fonts.googleapis.com/css?family=${fontFormat}:300,300i,400,400i,500,500i,700,700i,900,900i&display=swap`;
    const [googleFontLink, setGoogleFontLink] = useState(updatedFont);

    useEffect(() => {
        setGoogleFontLink(updatedFont);
        value = googleFontLink;
    }, [fontFamily]);

    return (
        <StyledContainer>
            <FontPicker
                apiKey="MY-API-KEY"
                activeFontFamily={fontFamily}
                onChange={({ family }) => setFontFamily(family)}
                limit={100}
                sort={'popularity'}
            />
        </StyledContainer>
    );
}
导出函数FontPickerInputField({field}:FontPickersIDABRPROPS){
常量占位符字体:字符串='opensans';
常量[fontFamily,setFontFamily]=使用状态(占位符字体);
设{value,name}=字段;
常量fontFormat:string=fontFamily.replace(/\s/g,“+”);
常量更新字体=`https://fonts.googleapis.com/css?family=${fontFormat}:300300300i、400400i、500500i、700700i、900900i&display=swap`;
const[googleFontLink,setGoogleFontLink]=useState(updatedFont);
useffect(()=>{
setGoogleFontLink(更新字体);
值=谷歌方链接;
},[fontFamily]);
返回(
setFontFamily(家族)}
限制={100}
排序={'popularity'}
/>
);
}

您需要使用
useState
hook<代码>值来自道具,如果您想用状态更改更新道具,请初始化如下-

const [currentValue, setCurrentValue] = useState(value); // initialize with the value from the props
现在,当您要更新当前值时,请使用钩子-

useEffect(() => {
        setGoogleFontLink(updatedFont);
        setCurrentValue(googleFontLink);
    }, [fontFamily]);

您可以看到,
currentValue
也在body中更新。

字段
是从父级传递的道具,因此其
值不能从子级更新。你能分享一下这个
字段
道具来自哪里吗?