我有一个方法showInfo,它由两个组件Child1和child2访问。
最初,我在Child1组件中有showInfo方法,如下所示
const Child1 = ({history}: RouteComponentProps) => {
type Item = {
id: string,
name: string,
value: string,
};
const showInfo = (item: item) => {
const id = item.id;
const value = item.value;
const handleRouteChange = () => {
const path = value === 'value1' ? `/value1/?item=${itemId}` : `/value2/?item=${itemId}`;
history.push(path);
}
return (
<Button onClick={handleRouteChange}> Info </Button>
);
}
return (
<SomeComponent
onDone = {({ item }) => {
notify({
actions: showInfo(item)
})
}}
/>
);
}
上面的代码起作用。但现在我有另一个组件child2,它需要使用相同的方法showinfo。
组件child2如下所示
const Child2 = () => {
return (
<Component
onDone = {({ item }) => {
notify({
actions: showInfo(item)
})
}}
/>
);
}
我没有在Child2组件中编写相同的方法showInfo,而是将它放在不同的文件中,在这个文件中,child1和Child2组件可以共享showInfo方法。
下面是名为utils.tsx的文件,该文件具有showInfo方法
export const showInfo = (item: item) => {
const id = item.id;
const value = item.value;
const handleRouteChange = () => {
const path = value === 'value1' ? `/value1/?item=${itemId}` :
`/value2/?item=${itemId}`;
history.push(path); //error here push is not identified as no
//history passed
}
return (
<Button onClick={handleRouteChange}> Info </Button>
);
}
return (
<SomeComponent
onDone = {({ item }) => {
notify({
actions: showInfo(item)
})
}}
/>
);
}
通过上面的操作,我在showInfo方法中使用history.push时得到了错误。未定义推送。
这是因为在此文件utils.tsx中未定义历史记录
现在的问题是我如何从child1或child2组件传递历史记录。或者在这种情况下我可以访问历史记录的另一种方式是什么。
有人能帮我一下吗。多谢了。
虽然您可能会创建一个自定义钩子,但您的函数返回JSX。这里讨论了在自定义钩子中返回JSX的问题。IMO,这与其说是一个util或自定义钩子场景,不如说是一个可重用的组件。这很好!
export const ShowInfo = (item: item) => { // capitalize
const history = useHistory(); // use useHistory
// ... the rest of your code
}
现在在Child1和child2中:
return (
<SomeComponent
onDone = {({ item }) => {
notify({
actions: <ShowHistory item={item} />
})
}}
/>
);
您可能必须根据ondone
属性和notify
函数调整一些代码,但这种模式提供了您所要寻找的可重用行为。
如何在孩子的标签和函数sayhello中访问家长的道具? (我可以访问兄弟姐妹和孩子,而无需将道具作为参数传递,但不能访问家长) \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 和(远离本例) 如果此代码引用了 如何访问家长的道具 如果将Chi
我想访问
问题内容: 如果我有类似的东西 我想从我拥有的地方访问,该怎么办? 问题答案: 推荐用于16.3之前的React版本 如果无法避免,那么从React文档中提取的建议模式将是: 该 家长 转发绑定到一个功能道具 家长 。当呼叫作出反应的 儿童的 道具也将分配 孩子的 给 父母的 财产。 建议用于React> = 16.3 引用转发是一种选择加入功能,它使某些组件可以接收它们收到的引用,并将其进一步向
我在用vue-cli支架做网页包 我的Vue组件结构/传家宝目前看起来如下: 应用程序 在应用程序级别,我需要一个vuejs组件方法,该方法可以将子组件的所有数据聚合到一个JSON对象中,然后发送到服务器。 有没有办法访问子组件的数据?具体来说,多层深? 如果没有,传递oberservable数据/参数的最佳实践是什么,这样当子组件修改它时,我就可以访问新的值?我试图避免组件之间的硬依赖关系,所以
我使用Expo,我想添加访问我的应用程序的用户有一个谷歌帐户。然后我需要得到有关用户登录到我的应用程序谷歌日历的信息。 我使用:(https://docs.expo.io/versions/latest/sdk/google)实现登录功能。我的范围如下所示: 当有人试图登录我的应用程序时,它会询问查看日历列表的权限。作为回应,我得到: 我收到了关于用户的数据,但我没有关于它的日历的任何数据。我尝试