children
にタイプ注釈を付けるより良い方法はありますか?
type FilterLinkProps={
filter:State$VisibilityFilter,
children:any
};
const FilterLink = ({
filter,
children
}:FilterLinkProps) => {
return (
<a href='#'
onClick={e => {
e.preventDefault();
store.dispatch(({
type: 'SET_VISIBILITY_FILTER',
filter
}:Action$VisibilityFilter));
}}
>
{children}
</a>
);
};
のようには見えません。
公式から React libdef :
declare module react {
declare var Children: any;
...
}
その後
declare function cloneElement<Config> (
element: React$Element<Config>,
attributes: $Shape<Config>,
children?: any
): React$Element<Config>;
Flow v0.53は、箱から出してchildren
をサポートします!!
import * as React from 'react';
type Props = {
children?: React.Node,
};
詳細については、 公式ドキュメント または次の ブログ投稿 を参照してください。
フローの古いバージョンの場合、次の操作を実行できます。
import React from 'react';
import type { Children } from 'react';
type Props = {
children?: Children,
};
const SampleText = (props: Props) => (
<div>{props.children}</div>
);
いずれの場合も、children
は nullable 型として宣言する必要があります。
彼らは繊維の到着とともにいくつかの部分を前進させるようです、彼らがそうすることを願っています!
github での議論に続いて
チートシート:http://www.saltycrane.com/blog/2016/06/flow-type-cheat-sheet/
type Text = string | number;
type Fragment = Iterable<Node>;
type ReactNode = React$Element<any>
| Text
| Fragment;
ReactNode
は子供のタイプである必要がありますが、エンプターに注意してください。
出典:フローリポジトリのいくつかのgithubの問題でこの構造を見たと思います。