reactjs - 创建一个无法访问 React 生命周期的钩子会导致项目进一步发展的问题吗?
问题描述
我创建了一个名为的钩子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,
};
};
如您所见,它无法访问 React 生命周期,例如 someuseEffect
或useState
.
这是一个坏习惯吗?我将在很多地方使用它,所以在某个地方抽象它对我来说是有意义的。
编辑:我编辑了这个问题,所以它不是基于意见的。感谢@Heret Monkey 的建议。
解决方案
它只是目前不是一个钩子,所以你不必使用use*
命名约定。
甚至有人会争辩说你不应该使用钩子命名约定,因为其他人可能认为这个函数必须像钩子一样使用(“钩子规则”)。
自定义钩子不仅仅是在组件中调用的函数,而是在内部实际使用一个或多个钩子的函数。除了名字之外,没有什么不好的。它只是一个封装了某个工作流程的辅助函数。
除非您认为它会在不久的将来使用钩子,否则您可以将其命名为不同的名称,以免其他人将其与钩子混淆。
推荐阅读
- python - 使用 `sys` 如何从文件路径导入文件?
- javascript - 从 JavaScript 事件中提取数据
- c++ - C++ 重新启动应用程序或重新运行“winapi main”
- excel - 使用 .Refresh BackGroudQuery:=False 内存不足
- java - 卡夫卡听众不听卡夫卡
- c# - WPF 材料设计文本框通过幻灯片显示。有解决方法吗?
- windows-runtime - Inference of onnx model (opset11) in Windows 10 c++?
- javascript - packages not loaded when migrating to webpacker
- r - 如何在R中组合两个函数?
- kubernetes - Kubernetes-pod 有哪些不同的日志级别?它的作用是什么?