У меня есть компонент, передающий параметр дочерним элементам:
<Nav id="header" onDown="body" active>
{isActive => <Header isActive={isActive} />}
</Nav>
Работает нормально, но VSCode жалуется на тип:
Параметр isActive неявно имеет тип 'any', но лучший тип может быть выведен из использования.
Можно исправить, добавив строку do c, но я ищу умный способ избежать добавив его для каждого компонента, используя <Nav />
и сделайте его чистым:
<Nav id="header" onDown="body" active>
{
/**
* @param {boolean} isActive
*/
isActive => <Header isActive={isActive} />
}
</Nav>
Nav
реализация компонента:
import React, { useEffect, useState } from 'react'
import useNav from './use-nav'
/**
*
* @param {Object} props
* @param {Function} props.children
* @param {string} props.id
* @param {string} [props.onUp]
* @param {string} [props.onDown]
* @param {string} [props.onLeft]
* @param {string} [props.onRight]
* @param {boolean} [props.active]
* @returns {React.ReactElement} Nav
*/
const Nav = ({ children, ...props}) => children(useNav(props))
export default Nav
Полный код здесь https://github.com/iepsen/react-nav/tree/v1.0.0
Спасибо.