我有一个可重用的组件AppFormButtonGroup
接受道具buttons
name
value
onPress
selectedIndex
...props
它也使用const { setFieldValue } = useFormikContext();
配置如下:
<ButtonGroup
buttons={buttons}
selectedIndex={selectedIndex}
onPress={onPress}
{...props}
/>
对于它的应用程序,比如说,在另一个文件上,我这样使用它:
<AppFormButtonGroup
name="country"
buttons={countries}
selectedIndex={selectedCountryIndex}
onPress={(value) => {
setCountry(countries[value])
setSelectedCountryIndex(value)
setIsCountrySheetVisible(false)
}}
value={country}
/>
onPress道具的内容被转移到AppFormButtonGroup
,然后被应用。它现在正在工作。
我的问题是如何使用setFieldValue
内AppFormButtonGroup
的onPress道具,如果我已经设置了其他文件上的onPress道具的内容?
这是我的目标之一:
AppFormButtonGroup.js
onPress={() => {
setFieldValue(name, value);
}}
这是按预期工作,但它被覆盖的onPress道具[code below]在它
AnotherFile.js
onPress={(value) => {
setCountry(countries[value])
setSelectedCountryIndex(value)
setIsCountrySheetVisible(false)
}}
如何同时使用两者?
我不确定这是否是我的语法错误,或者我正在做的方法是非常低效的,如果你能提供一个更好的方法,我将非常感激!
谢谢!
我尝试了以下方法,但没有效果:
onPress={[onPress,setFieldValue(name, value)]}
我也试过在其他文件上声明和使用const { setFieldValue } = useFormikContext();
,但似乎不起作用。
我的问题是我如何在一个onPress中使用以下内容?
setCountry(countries[value])
setSelectedCountryIndex(value)
setIsCountrySheetVisible(false)
setFieldValue(name, value)
当setFieldValue(name, value)
只能在AppFormButtonGroup.js
内部使用
在子类中首先更新本地状态,然后调用父类处理程序。像这样:
const Child = ({onPress}) => {
const [count, setCount] = useState(0);
return <Button
title={`${count}`}
onPress={() => {
setCount(count + 1)
onPress(count + 1)
}}
/>
}
const Parent = () => {
const [count, setCount] = useState(0);
return <>
<Child
onPress={(c) => setCount(c)}
/>
<Text>{`Child count ${count}`}</Text>
</>
};