作者归档:c君不在

React Context

Context 的目的是对于全局的需要多处使用的数据,不希望通过 prop 一层层传递下去,而是可以直接使用。

childContextTypes & getChildContext

该方案在 16.3 后不再是推荐方案。

React 最初提供的 context 方案是提供 context 数据的组件通过静态的 childContextType 来定义 context 中各字段的数据类型,通过 getChildContext 成员方法来提供实际的 context 数据,其中,返回的数据可以搭配 prop 和 state 来提供响应式的数据。而消费 context 数据的组件通过静态的 contextTypes 来指定需要消费的 context 字段的类型集合,然后即可通过 this.context[fieldName] 来使用。

注意,消费 context 的组件只需要定义需要的字段的类型即可,不需要是全部。同时,也不需要是提供 context 的组件的直接子组件。

import PropTypes from 'prop-types';

class Button extends React.Component {
  static contextTypes = {
    color: PropTypes.string
  };

  render() {
    return (
      <button style={{background: this.context.color}}>
        {this.props.children}
      </button>
    );
  }
}

class Message extends React.Component {
  render() {
    return (
      <div>
        {this.props.text} <Button>Delete</Button>
      </div>
    );
  }
}

class MessageList extends React.Component {
  static childContextTypes = {
    color: PropTypes.string
  };

  getChildContext() {
    return {color: "purple"};
  }

  render() {
    const children = this.props.messages.map((message) =>
      <Message text={message.text} />
    );
    return <div>{children}</div>;
  }
}

继续阅读

青春猪头少年不会梦到兔女郎学姐

青春猪头少年不会梦到兔女郎学姐

这部作品是 18 年比较喜欢的一部作品,故事情节以及表达方式上都是容易理解和接受的。渴望被关注、被爱、被认同、融入群体、有三五知己、开始需要直面社会背面的恶,由此而带来的属于青春的烦恼和情感。

由于是小说改编,也还不是完全改编——不知道是否是想留做第二季,所以 TV 版情节上有些不完整,比如比较关键的翔子的故事没能展示出来。但依然是一个好作品,相比之下,《我喜欢的妹妹但不是妹妹》的故事则完全没有吸引力。

海峡两岸

台湾问题,以前没关注过,最近才听到「九二共识」这个概念。

虽然有着各自的政治倾向,但个人浅薄的理解是,希望能在认同都是中华民族血脉的前提下谋求当下合作共存,展望未来的统一——大陆的收复台湾和台湾的反攻大陆。所以,终极目的是大一统。

这个终极目的,在蔡英文当局以及其所在的民进党以「台独」为目的的存在来说,这是不可能接受的。

查明 git 中文件被哪条规则 ignore

如果配置了复杂的项目以及全局 ignore 规则,那么在文件被意外 ignore 的时候很难马上查明被哪条规则 ignore 了,这个时候可以用 git check-ignore 来查明。

git check-ignore -v pathname...
$ git check-ignore node_modules
node_modules

$ git check-ignore node_modules -v
.gitignore:4:/node_modules  node_modules

$ git check-ignore a.tmp
a.tmp

$ git check-ignore a.tmp -v
/Users/xx/.gitignore_global:14:*.tmp    a.tmp

References

二十年前的法律就不适用了?

今年到今天为止看到的最讶异的话语是“怎么能拿二十年前的法律来判今天的人?”。

在我的认知中,只要法律还没修订、还没失效,那么不管多少年,那都是有效的。如果觉得不与时俱进,那么合理的做法是推动其修订或废弃,而不是自认为不是有效地就当其不存在。

当然,我其实是觉得那个案子震慑了那群公开无视黄赌毒相关法律的所谓的爱好者,怕顺藤摸瓜抓到自己,所以打着“法不责众”的小九九在睁眼说瞎话。

上述前提,自己还没详细去看庭审记录

计划了解一点的法律知识,至少了解日常生活中自己的权利和法律禁区。

参考

受限信息

CIA:你的研究1是受限的,把它泄漏给外国敌对组织是违法的。
教授:受限?没人通知过我啊。
CIA:限制目录是保密的。
《numb3rs 第四季 18 集》

联想到了保密的敏感词


  1. 指提高农作物的抗疾病能力,但也可能被用来制作武器 ↩︎

基因

最近基因治疗、基因编辑好像收到不少的关注,自己本身并没有去关注,只是想起了以前看过的一本小说,里面有相关的事件。

观点有很多,如果通过基因技术,能够治愈某些绝症,那么是否可以用它来拯救生命呢?

另一方面,医疗至少很长一段时间内不能做到人人接近免费享受,所以和所有的市场行为一样,越有钱的人越能享受到更好的服务。在基因相关技术开放的情况下,富人能做更多的基因优化,而底层的人可能负担不起任何一个基因治疗,最后可能就是“消灭一部分人来达到共同富裕”了。

进步、健康、伦理、公平,这些关注点在生命的奥秘命题上可能会有非常多的辩论与纠结。

101

经常看到 Math 101ReactJS 101Java 101 等,虽然能大概明白是什么意思,但一直没考究过,今天决定查看一下。

xx 101 这种用法来自美国大学的课程,一般用字母+数字的组合来作为课程代称,如 CS101 这种一般用来指代计算机导论这类课程。其中字母 CS 代表计算机类别,(从左边开始),第一个数字表示课程级别,简单来说就是大几,中间的数字表示课程子类,最后的数字表示第几学期。

后来 101 则进一步延伸为某一领域的入门知识。

参考

电影开屏广告

我进电影院的次数屈指可数,上一次进电影院还是几年前,印象中那时进去就是直接看电影。没想到最近去电影院,还没到点,于是看了好一会广告,这是常见经营模式了吗?

Git 永久移除文件

Git 基于内容寻址的文件系统及数据对象1等设计,默认情况下,文件每次变更都生成一个副本。如果需要移除已经 push 到远程仓库中的文件,那么仅当前 commit 删除 ignore 并不能完全地移除掉对应的文件,还需要把其从所有的历史记录中移除才行。

这个需求可以通过 git filter-branch 来完成,但这个命令偏底层,具体到删除文件这个场景上,可以使用 bfg-repo-cleaner 这个工具。这个工具功能挺多的,具体参考官网文档或使用时的提示。

下面是一个删除指定目录的流程

git clone --mirror xxRepo   # 需要在 mirror 模式下操作
cd xxRepo
java -jar path/to/bfg.jar --delete-folders "{build, dist}" --no-blob-protection
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push

参考