Last active
February 14, 2019 23:35
-
-
Save ryanflorence/be2c385d714a3352389e30bd68e710f0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// how do I write this: | |
const Profile: React.FunctionComponent<ProfileProps> = ({ userId, navigate }) => { | |
console.log(navigate); | |
return <div>{userId}</div>; | |
} | |
// as this: | |
function Profile({ userId, navigate }) { | |
console.log(navigate); | |
return <div>{userId}</div>; | |
} | |
// I tried this: | |
function Profile({ userId, navigate }): React.FunctionComponent<ProfileProps> { | |
console.log(navigate); | |
return <div>{userId}</div>; | |
} | |
// and this: | |
function Profile<React.FunctionComponent<ProfileProps>>({ userId, navigate }){ | |
console.log(navigate); | |
return <div>{userId}</div>; | |
} | |
// neither work. | |
// Also we can't just do function Profile(props: ProfileProps) {} | |
// because Profile can be passed to a HOC or a "component" prop | |
// and w/o the React.FunctionComponent stuff it fails the type checking | |
// on React.ComponentType |
const Profile: React.FunctionComponent<ProfileProps> = function Profile({ userId, navigate }) {
console.log(navigate);
return <div>{userId}</div>;
}
Also works, even though that's probably not what you want to do. From what I can tell, tsx
doesn’t see to let you cast that function declaration using the prefix syntax.
@artisonian nice solution
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
in my last project using Typescript with React I used this one