0%

事件频繁发生,但响应的频率有一个固定的上限,这种叫节流( throttle ):把流量节成固定的段。
事件频繁发生,但响应会忽略之前的事件,只根据最后的事件按照固定时延发生,这种叫防抖( debounce )。

问题

要参考的项目:
RC-MENU

  1. 如何将列表转成DomNode

创建一个函数,将对象列表map成需要的jsx元素。并用useMemo对jsx元素进行包裹,来检查对象列表的依赖。

  1. 如何使<li/>disable
  2. 这是什么语法(className)
1
2
3
4
5
6
7
8
//[GitHub1s](https://github1s.com/fis-components/rc-menu/blob/HEAD/lib/MenuItem.js):141
var attrs = _extends({}, props.attribute, {
title: props.title,
className: (0, _classnames2['default'])(classes),
role: 'menuitem',
'aria-selected': props.selected,
'aria-disabled': props.disabled
});

key 是特殊props

<Menu/>使用useItems()来将对象列表转成 Html Node. 在useItems中为每个<MenuItem/>分配了key.

1
2
3
4
5
6
const mergedKey = key ?? `tmp-${index}`  
return (
<MenuItem key={mergedKey}>
{label}
</MenuItem>
)

<MenuItem/>中,试图从props中访问这个key,触发警报:

1
Warning: MenuItem: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. 

相关警告帮助:Special Props Warning – React

有两个特殊的 props (refkey) 被 React 使用,因此不会传递给组件。

如果想传递需要换名字,一共两个,一个用于标定唯一的key一个用于传递。

如何实现多级递归嵌套,同时使样式依赖上一级相应改变。

如何向子组件透传active等属性

GitHub1s

Menu 向 MenuItem 传递 onActive。MenuItem在onFocus, MouseEnter, 时触发这一onActive事件, MouseLeave触发onInActive
Menu的onActive改变activeKey。

需求

Item 鼠标进入时会 active,离开时会 inActive, 选中时会 selected
使用 mouseEnter 来产生 CSS 的 hover 效果。

在故事中,主人公经常对他人的性格作误判的同时,也经常对自己作误判 – 这与林云形成鲜明对比。这一表现与他前半生太执着于自己是分不开的。

「我是谁」,这个问题是如此难以回答,局部的答案也会随着经历而变化,这需要用一生去回答的问题。好在我们不需要一个静止的答案,从运动的角度,追逐这一答案的过程就是存在的意义之一。

然而很多时候我们迫切地想探求这一答案,我们通常会有这样一种依赖此答案的决策模式:「我需要了解清楚自己是个什么样的人,然后我才去做什么事。」比如手相、星座、MBTI等工具的受追捧印证了人们这种普遍存在的身份焦虑,这些工具的运用会让我们焦虑的心得到一种安全感:「虽然得不到真正的答案,但一个置信水平高的解释总归是对我有帮助的。」

这一决策模式也会被成年人运用到对自己孩子的教育上:「我的小孩活泼好动,她适合学舞蹈而不是数学」

这里尝试讨论一下这一决策模式存在的问题,帮助我们思考另一种可能。

原谅我唐突地回到文中角色来做铺垫。

主人公我面对「球状闪电」的奋斗模型是这样的:「选择一件事,把一切路上的困难都看作是为了获得最后的欢愉而不能不忍受的代价,延迟享受、不断奋斗,直到如愿以偿,赢取最后的胜利」。

在主人公做这个决定时,心理活动大概是这样的:「如果运气好我克服一切困难可以达到这一目的,等待我的就是我人生终极意义的实现的巨大快感;如果运气不好,我一辈子徒劳无功,那样的结果我也应该也能心安承受吧,毕竟努力过了。」这里做了两个假设:假设所有的困难是可以克服的,假设自己承受得了一切代价付诸东流的结果。

在现实世界中的一开始没人会能给出这两个假设的概率,我们会在人生中经常面对这种博弈选择,这时候行者的眼睛被远处的绿洲吸引住了,他也会想到这是海市蜃楼的可能,但他主观上认为自己无法做出更好的预案。比如在最开始,文中主人公涉世未深,此时他眼里只有这条路。

就我们对客观世界的认识,在这一路上,必然遇到数不清难以越过的山,行者会无数次质疑自己:万一那是海市蜃楼怎么办?比如:「这可能不是一件有前途的事」,「我可能不适合干这个」,「我可能根本完不成这件事」。而且一旦再遇到一座空前的大山,哪怕前面走过的山再多,都不会减弱对自己此次失败的怀疑。这就是为什么文中主人公虽然有所成就但面对无数前人尸体时的充满绝望。

同理,虽然我们可能先前有多次遵循这一决策模式达成胜利的经验,但这些成功经验帮不了我们抑制这一次强烈的自我怀疑,为了抑制这些怀疑,这时的我们自然对「鸡汤」趋之若鹜。但主人公走的这条路,没有前人的鸡汤可以喝。另外,怀疑会像一颗种子,下意识里生出对自己的厌恶等等消极情绪。比如,主人公面对军人时的自卑,面对年轻护士时的自卑。

年轻人幸运的一点在于,最后发现是海市蜃楼,或因忍受不了巨大的怀疑而宣布失败,面对失败我们还有后半辈子的时间换一个赛道。不得志的我们还可以用「我不合适做」,「大坏境不行」来和自我做妥协。

照应到现实:为什么我不能换一个我认为好坚持的赛道。比如我不喜欢编程。我想写小说。

这就回到我们一开始的讨论,可不可以通过回答好「我是谁」这一问题,一开始或者试了几次后找到自己合适做的事?无论我们回答得多好,找到一个多么适合自己的道路,我们仍然要爬山,仍然无法从一次又一次自我怀疑和消极情绪中解脱,直到完成了目标。有人千辛万苦考上研究生,只有在拿到录取通知书和毕业证这两个时刻是快乐的。

同样值得幸运的是,我们不会成为西西弗斯,寿命有限,哪怕一直得不到解脱,所获得的痛苦终归也是有限。赵彬一辈子只走一条路,假如到头来没有翻过致命的大山,在意识到自己时日无多后他还是得以选择放下所有想法,去过自己的余生的。

上文的的奋斗模型和「我需要了解清楚自己是个什么样的人,然后我才去做什么事」的决策模式的思路是类似的,是「结果导向」思维。

在不得志时,「我不合适做」就成了一种妥协的借口,

结果导向的策略会让欧皇攀上高峰,但非酋会在这一过程中屡遭碰壁。相比较就有了另一种思维模式:”过程思维“。

第一次意识到这一问题还是在阅读《掌控习惯》这本书时:要达成某个目标,重点应放在如何培养习惯上,通过习惯的培养,将精力耗费和心智成本降到低水平,通过习惯的保持达到水到渠成的结果。就算没有完成最终目标,养成习惯本身也是一项成就。

Credit:怎样才能真正清楚地认识自己? - 9adgq的回答 - 知乎