我想避免手动将onClick属性添加到我的自定义组件中。
为此,我想到了一个名为的高阶组件WithClick,它将用集成onClick属性包装我的组件。
我面临的问题是,为了包装它,我必须使用额外的<div />标签来访问事件属性。这个标签搞乱了我的 CSS。
例子 :
import React, { Component } from 'react'
const WithClick = (WrappedComponent) => {
class BaseComponent extends Component {
render () {
return (
<div onClick={this.props.onClick}>
<WrappedComponent {...this.props} />
</div>
)
}
}
return BaseComponent
}
export default WithClick
Run Code Online (Sandbox Code Playgroud)
解决方案是 hack,允许将 onClick 事件附加到<React.Fragment />标签或类似的东西。
我尝试将 ref 附加到孩子,但它不起作用,我必须对待孩子的 ref 道具,所以这样做没有意义。
我正在尝试使用未知类型参数创建一些函数来通用地应用函数。
让我们以一个可以应用于close(int fd)数组的每个元素的函数为例:
void for_each(void *array[], void (*func)(void *))
{
for (size_t i = 0; array[i] != NULL; ++i)
func(array[i]);
}
Run Code Online (Sandbox Code Playgroud)
如果我想将这个函数与 一起使用close(int fd),我必须制作一个这样的包装函数:
void close_fd(void *fd)
{
close(*(int *)fd);
}
Run Code Online (Sandbox Code Playgroud)
我想将此for_each函数与字符串、浮点数和其他所有内容一起使用。
- 如果没有包装部分,就没有什么可以实现的吗?
- 我知道 C++ 有很多方法可以做到这一点,例如 lambdas、模板等,但是在 C 中有什么好方法吗?妥协?
我正在创建一个 TypeScript 组件/包装器,在每个子组件之间添加一个分隔线:
\nimport React, { FC, Children } from \'react\'\n\nconst DividedChildren: FC = ({ children }) => {\n return (\n <div>\n {Children.toArray(children).map((node, index) => {\n if (index === 0) return node\n return (\n <Fragment key={node.key}> // TS Error, but code works fine\n <div className="divider" />\n {node}\n </Fragment>\n )\n })}\n </div>\n )\nRun Code Online (Sandbox Code Playgroud)\nkey但是,当我尝试将孩子移动到他的新容器中时,出现 TypeScript 错误:
\nTS2339: Property \'key\' does not exist on type \'ReactChild | ReactFragment | ReactPortal\'. \xc2\xa0\xc2\xa0Property \'key\' does not exist on type \'string\'. …