写demo的习惯不要带到职场上去

很多同学在学校里写玩具写习惯了,如果在实际工程开发中,有一些需要额外注意的点。

多关注一下边界值的一些展现形态

例如一个弹窗或者提示区的内容是通过后端获取的,需要确定获取失败时展示,和待加载时的交互和展示态,必须要让用户在点击按钮时触发loading来知道系统已经进入处理阶段,同时可以在请求返回结果前禁用按钮,否则用户可能会多次进行点击触发多次请求。

如果你想写一个列表/表格,那么首先考虑的就是分页问题,如果这个列表是通过查询得来的,那么应该考虑防抖节流的问题。如果这个列表可以通过tab去切换,那么你必须要处理用户同时点击多个tab的情况,需要保证最后列表所展示的是用户最后点击的tab。如果列表项展示的是string,那么需要考虑其展示逻辑,比如说数字的精度,文字的长度,访问具体字段时,是否有可能在undefined或者null上取值触发报错。在取tab项特殊code的时候,建议使用枚举来避免硬编码,这样便于case值发生更改值不用进行查找和一个个替换。

1. 异步数据加载与交互状态管理

弹窗、提示区、列表、表格等组件,涉及到后端数据获取时,可能出现以下几种情况:

异步请求失败时的展示

错误展示:当数据获取失败时,要确保用户能收到明确的错误信息。可以展示友好的错误提示(例如:网络错误、服务器错误等),并给用户重试的选项。

if (error) {

return <div className=&quot;error-message&quot;>加载失败,请重试。</div>;

}

状态反馈:对于请求失败的场景,可以使用不同的状态反馈机制,如“重试”按钮,或在弹窗中显示一个带有错误信息的图标。

待加载时的交互和展示

Loading 状态:在数据请求期间,使用 loading 指示器让用户知道数据正在加载。这可以是一个旋转的加载动画、进度条或其他交互提示。确保用户能在点击按钮后看到反馈,避免因延迟而不清楚系统状态。

return loading ? <LoadingSpinner /> : <DataList />;

占位符:展示内容之前,可以使用占位符(Skeleton loader)来模拟数据加载的过程,提升用户体验。

jreturn loading ? <SkeletonLoader /> : <DataContent />;

2. 分页与防抖、节流

当处理分页或动态列表时,尤其是涉及到异步查询和用户操作时,有很多细节需要注意。

分页处理

分页状态管理:如果列表的数据量较大,需要考虑分页功能,避免一次性加载所有数据,减少性能压力。分页信息(如当前页码、每页条数)需要存储在状态中,并确保在分页时正确更新列表。

UI 提示:在分页加载时,要考虑为用户提供页码信息、加载提示以及分页的上一页/下一页控制。

防抖与节流

防抖:用户在分页、查询、搜索等操作时,可能频繁触发请求,这时候需要使用防抖(Debounce)来延迟请求,避免每次输入都发送请求,提升性能。

const handleSearch = debounce((query) => {

// 发起搜索请求

}, 300);

节流:对于频繁的事件(如滚动、窗口尺寸变化等),使用节流(Throttle)可以限制事件触发频率,减少不必要的请求和计算。

const handleScroll = throttle((event) => {

// 处理滚动事件

}, 200);

3. Tab 切换与并发操作

如果一个页面有多个 tab 选项,切换 tab 后,可能会引发一些需要特别处理的交互问题。

多 Tab 切换的防冲突处理

当前选中 Tab 管理:每次切换 Tab 时,确保最新的 tab 选项保持为当前选中状态,避免数据错误。通过 useState 管理当前选中的 tab。

避免并发请求冲突:如果多个 Tab 触发了并发请求,需要确保最后请求返回的数据被正确展示,并避免数据的乱序展示。可以通过 useEffect 中的依赖数组和状态管理来确保数据更新正确。

const [activeTab, setActiveTab] = useState(0);

const [data, setData] = useState([]);

useEffect(() => {

fetchDataForTab(activeTab);

}, [activeTab]);

4. 列表项展示和字段安全

当展示列表项时,需要注意以下一些常见问题:

数字精度处理

浮点数精度:当列表项显示数字时,特别是涉及到金额、百分比等精确数据时,确保精度正确,避免浮动误差。

js 代码解读复制代码const formatNumber = (num) => num.toFixed(2);

文字长度与显示

文字超长处理:长文本需要进行处理,避免溢出或布局错乱。可以使用 CSS 的 text-overflow: ellipsis 来截断过长文本,或者根据需要动态生成可展开的省略符。

.text-container {

white-space: nowrap;

overflow: hidden;

text-overflow: ellipsis;

}

字段访问的安全性

访问 undefined 或 null 时避免错误:在访问嵌套对象的属性时,必须考虑属性可能为 undefined 或 null 的情况。可以使用可选链 ?. 来避免错误,或者进行显式的 null 检查。

js 代码解读复制代码const userInfo = user?.address?.street || &quot;未知&quot;;

5. 枚举与常量使用

对于一些固定的状态、类型、选项等值,建议使用枚举或常量来避免硬编码,提升代码可维护性和可读性。

Tab 选项枚举

当 tab 项目较多时,使用枚举(Enum)来管理常量值,避免频繁修改字符串或值:

const TabTypes = {

GENERAL: 'general',

DETAILS: 'details',

SETTINGS: 'settings'

};

const [activeTab, setActiveTab] = useState(TabTypes.GENERAL);

避免硬编码

对于一些特定的状态、分类值等,应该将其提取为常量或枚举,使得代码更易维护。

const Status = {

SUCCESS: 'success',

ERROR: 'error',

PENDING: 'pending'

};

6. 用户输入验证与防止恶意输入

在处理用户输入时,尤其是表单数据、搜索框等,需要做好输入验证和数据清洗。

输入长度限制与格式检查

输入长度限制:确保输入内容不超长,避免界面布局或性能问题。使用前端验证和后端验证双重保障。

if (input.length > 100) {

alert(&quot;输入过长,请限制在100字符以内&quot;);

}

防止 SQL 注入和 XSS 攻击

防止 XSS:如果用户输入的内容会直接渲染到页面中,要做相应的转义处理,避免恶意脚本的执行。

const escapeHtml = (str) => {

const element = document.createElement('div');

if (str) element.innerText = str;

else element.textContent = str;

return element.innerHTML;

};

7. 键盘和触摸事件支持

键盘操作支持:特别是在移动端或有特殊需求的项目中,考虑键盘交互(如 Enter 键提交、Esc 键关闭弹窗等)。

useEffect(() => {

const handleKeyDown = (e) => {

if (e.key === 'Escape') {

closeModal();

}

};

window.addEventListener('keydown', handleKeyDown);

return () => {

window.removeEventListener('keydown', handleKeyDown);

};

}, []);

触摸事件支持:对于触摸屏设备,考虑替换或支持触摸事件,如 touchstart, touchend,以及确保页面在触摸设备上的交互流畅。

8. 滚动和加载更多

对于长列表、无限滚动等情况,需要优化滚动和加载行为。

滚动加载更多

检测滚动位置:当用户滚动到页面底部时,触发更多数据的加载。可以结合节流来减少滚动事件的触发频率。

const handleScroll = () => {

if (window.innerHeight + document.documentElement.scrollTop === document.documentElement.offsetHeight) {

// 加载更多数据

}

};

#前端# #实习##ai智能作图#

全部评论
那什么文生图,,,,直接把我正文卡没了 纯纯的bug。。。
2 回复 分享
发布于 12-06 17:49 北京
1 回复 分享
发布于 12-06 21:39 吉林

相关推荐

早上听到我的mt在讨论隔壁组转正的问题,隐隐约约听到试用期马上到了,但是用不了太多人,决定劝退几个,告诉他们不能转正,很逆天!由于我还在职,就不透露公司名称了!但是我可以告诉大家在遇到这种情况的时候应该如何维护好自己的权益!我去年也是转正的受害者!希望各位牛友理想对待!首先呢,不要先自我怀疑+自我检讨,在自己没有过错的情况下,公司是没有理由直接辞退我们的,任何口头通知,邮箱通知,都是不可以的,必须要公司出纸质版的证明,比如考核证明,辞退证明(说明原因)第二:如果说是公司威胁你离职,不给你离职证明这是违法行为,如果为了离职证明,证明上面有任何一个词汇是对你不利的,这也是违法切不正当的,国家规定的,不用害怕,如果你遇到了这些问题,不要感到害怕,这是我们正当的权益第三:如果说公司强行不让你办公了,没收了你的各种权限,你就每天去公司打开,用某些方式记录下来,拍照啊,留痕啊。这种行为是被迫离职,就可以申请劳动仲裁了,可以让公司赔偿你2n+!第四:劳动仲裁如何进行?这个操作可以去百度一下,这里我就不随便说啦,毕竟操作方式不一样!(这个很简单,只需要提交申请,一周内就会有答复)!在试用期/实习转正期。大家要保护好自己!收集适当的证据,防患于未然!防止公司突然变脸具体需要哪些证据呢?工作记录-&nbsp;工作内容记录:详细记录每天的工作任务、项目进展情况。比如你是一名文案编辑,记录撰写了哪些文案、文案的主题、要求完成时间以及最终交付情况等。可以通过工作日报、项目文档等形式保存,这样能清楚地展示自己的工作成果和工作量。-&nbsp;工作时间记录:如果公司有考勤系统,要确保自己的考勤记录完整准确。若是没有,自己也可以用一些方式简单记录上下班时间,像在日历应用中标记,万一出现纠纷,这可以用来证明自己的工作时长符合要求。-&nbsp;沟通记录:保存和上级、同事之间工作相关的沟通记录。例如工作邮件、工作群聊天记录等,这些记录可能会涉及工作任务安排、反馈意见等内容,能为你的工作过程提供依据。 操作保护 -&nbsp;了解公司制度和法律规定:仔细研读公司的员工手册、规章制度,明确试用期的考核标准和辞退流程。同时,熟悉国家相关劳动法律法规,清楚在试用期自己的合法权益,如在许多地区,用人单位若要在试用期辞退员工,需要证明员工不符合录用条件等。-&nbsp;绩效评估相关:如果公司有试用期绩效评估,主动询问评估的时间、标准和流程。并且在评估过程中,要求公司以书面形式记录评估结果和反馈意见,自己也要保存好这些文件。小涵课堂,下课 #小涵の青春故事# #牛客激励计划#
单纯的沙茶花在滑雪:收藏了,希望这辈子都用不上
投递百度等公司10个岗位 牛客激励计划
点赞 评论 收藏
分享
苏州科技大学:面试官:接个面试,对面同学是个杀软二次元
点赞 评论 收藏
分享
评论
20
47
分享
牛客网
牛客企业服务