tgoop.com/react_tg/423
Create:
Last Update:
Last Update:
ΠΠ΄Π½ΠΎ ΠΈΠ· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ forwardRef Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π΄Π»Ρ generic ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
const Table = <T,>(
props: {
data: T[];
renderRow: (row: T) => React.ReactNode;
},
ref: React.ForwardedRef<HTMLTableElement>
) => {
/** --snip-- */
};
const ForwardReffedTable = React.forwardRef(Table);
<Table
data={["a", "b"]}
renderRow={(row) => { // Π’ΠΈΠΏ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ: row: string
return <tr>{row}</tr>;
}}
/>;
<ForwardReffedTable
data={["a", "b"]}
renderRow={(row) => { // Π’ΠΈΠΏ Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ: row: unknown
return <tr>{row}</tr>;
}}
/>;
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π΄Π»Ρ generic ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° forwardRef Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ:
function fixedForwardRef<T, P = {}>(
render: (props: P, ref: React.Ref<T>) => React.ReactNode
): (props: P & React.RefAttributes<T>) => React.ReactNode {
return React.forwardRef(render) as any;
}
// ΠΡΠ·ΠΎΠ² forwardRef Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ°:
const ForwardReffedTable = fixedForwardRef(Table);
π ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
@react_tg