//子组件
type Props = { name: unknown; onChange: (data: unknown) => void };
export function Child(props: Props) {
return (
<div
onClick={() => {
props.onChange(props.name);
}}
></div>
);
}
//父组件
export function Parent() {
const name = ''; // name的类型任意可能是string也可能其他复杂类型
return (
<Child
name={name}
onChange={(data) => {
console.log(data); //如果希望这里data类型和name保持一致,应该如何编写字组件Props类型呢
}}
></Child>
);
}
父组件 onChange 里面 data 如何根据 name 类型推断出来
type Props<T> = { name: T; onChange: (data: T) => void };
export function Child<T>(props: Props<T>) {
/** */
}
在React和TypeScript中,要使子组件的Props
类型允许onChange
的data
参数类型根据name
参数类型进行推断,你需要使用泛型(Generics)。泛型允许你创建可重用的组件,这些组件可以工作于多种数据类型上。
下面是如何修改你的子组件Child
和父组件Parent
以利用泛型来实现这一点的示例:
// 子组件
type ChildProps<T> = {
name: T;
onChange: (data: T) => void;
};
export function Child<T>(props: ChildProps<T>) {
return (
<div
onClick={() => {
props.onChange(props.name);
}}
></div>
);
}
// 父组件
export function Parent() {
const name = '' as string; // 这里明确指定name的类型为string
return (
<Child
name={name}
onChange={(data: string) => { // 这里data的类型被推断为string
console.log(data);
}}
/>
);
}
// 或者,如果你想要TypeScript自动推断类型,你可以省略`onChange`中的类型注解:
export function ParentAutoInferred() {
const name = '' as string; // 这里明确指定name的类型为string
return (
<Child
name={name}
onChange={(data) => { // TypeScript将自动推断data的类型为string
console.log(data);
}}
/>
);
}
在这个例子中,Child
组件现在是一个泛型组件,它接受一个类型参数T
,该类型参数用于指定name
和onChange
的data
参数的类型。在Parent
组件中,我们明确指定了name
的类型为string
,因此onChange
的data
参数也被自动推断为string
类型。
如果你不想在Parent
组件的onChange
处理函数中明确指定类型,TypeScript也会基于Child
组件的泛型参数来自动推断data
的类型。这就是在ParentAutoInferred
组件中我们所做的。
在本教程中,他们将一个回调函数从父组件传递到子组件,并从子组件传递到子组件。我的问题是如何设置参数?我的猜测是,起点是在组件中调用。从那以后,我就不知道是如何进入的了。它是否存储在“on click方块板”中?
问题内容: 我正在尝试访问DetailsPage组件中的 ID ,但无法访问它。我试过了 将参数传递给DetailsPage,但徒劳。 所以有什么想法如何将ID传递给DetailsPage吗? 问题答案: 如果要将props传递到路线内的组件,最简单的方法是利用,如下所示: 您可以使用以下内容访问道具: 将需要通过原路线的道具,否则你将只能得到内。
[Vue]父组件A通过props传入子组件B一个函数f,子组件B想要执行f(null,B的一个data),并判断f中是否用到了第一个参数(通过try catch),如果用到了,再将f通过props传入孙组件C;否则将执行结果传入C? 父组件A中: 子组件B中: 孙组件C中: 目的是 1在组件A里定义一个函数f(参数1为子组件B的一个data,参数2为孙组件C的一个data) 2不能修改孙组件C的代
public static void main(String[]args){ 公共类CustomConfiguration{ public static void readConfig(String filename){//从config.properties文件读取 } 我的问题是如何将“a”传递给CustomConfiguration类?
问题内容: 对不起这个基本问题。我想将一个切片作为参数传递给。像这样: 结果将是,但这显然不起作用。 (我要格式化的字符串比这要复杂的多,因此,简单的串联是不会做到的:) 所以问题是:如果我有数组,如何将其作为单独的参数传递给?或者:我可以调用在Go中传递参数列表的函数吗? 问题答案: 正如您在IRC上发现的那样,它将起作用: 您的原始代码无法正常工作,因为接受a 并且无法将其隐式或显式转换为该类
我试着做一个ArrayList,包含另一个类的对象,一个名字,还有turn。类似于python字典的东西。 所以我做了一个有三个值的类。 我试图在主类的构造函数中调用它,如下所示: 但它引发了一个错误:无法推断ArrayList的类型参数