问题描述
我创建了一个名为 final
的钩子,它现在抽象了从二进制文件上传文件的逻辑,但将来它可以根据需要增长。所以它看起来像这样:
usefilestack
如您所见,它不会使用例如一些 const usefilestack = () => {
const upload = (binary: string) => {
const file = Buffer.from(binary,'binary').toString('base64');
const filestack = client.init(apiKey);
filestack.upload(file);
};
return {
upload,};
};
或 useEffect
来访问 React 生命周期。
这是一种不好的做法吗?我会在很多地方使用它,所以我在某个地方抽象它是有意义的。
编辑:我编辑了问题,因此它不是基于意见的。感谢@Heret Monkey 的建议。
解决方法
它目前不是一个钩子,因此您不必使用 use*
命名约定。
甚至有人会争辩说你不应该使用钩子命名约定,因为其他人可能认为这个函数必须像钩子一样使用(“钩子规则”)。
自定义钩子不仅仅是在组件中调用的函数,而是在内部实际使用一个或多个钩子的函数。除了名字之外,没有什么不好的。它只是一个封装了某个工作流程的辅助函数。
除非您认为它会在不久的将来使用钩子,否则您可以将其命名为不同的名称,以免其他人将其与钩子混淆。