Mac系统不能输入代码,编辑器光标变粗(大黑块)的解决办法

前言

最近使用VScode开发React的时候光标总是块状的,不能输入,解决起来也是很麻烦。[其他编辑器也适用]

react富文本编辑器 react富文本插件react富文本编辑器 react富文本插件


react富文本编辑器 react富文本插件


2、EnjoyCSS

在Windows系统下,按下insert 键,在方向键的上方。

Mac系统下,最快捷的方式是 fn + i ,其次如果还是不行,请检查是不是安装了一些插件影响到了。

Ps:VScode下,修改光标样式的图示,按下 command + ,打开设置

python初学者工具用什么工具好呢

2、Node 6.7.0

很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头。后来工作中深刻体会到,合理使用开发的工具的便利和高效。今天,我就把Python程序员使用频率比较高的5款开发工具给大家,希望对大家的工作和学习有帮助。

一、最强终端:Upterm

本来想 fish 或者 zsh,但其实这两个我也主要是贪图自动补全这个特性。最近在用的这个 Upterm 其实很简单好用,它是一个全平台的终端,可以说是终端里的 IDE,有着强大的自动补全功能。之前的名字叫 BlackWindow,有人跟他说这个名字不利于社区推广,改名叫 Upterm 之后现在已经17000+ Star了。

二、交互式解释器:Ptpython

一个交互式的 Python 解释器。支持语法高亮、提示甚至是 vim 和 emacs 的键入模式。其实我们在课程里提供的在线终端也内置了 ptpython。

三、包管理必备:Anaconda

强烈Anaconda ,它能帮你安装好许多麻烦的东西,包括: Python 环境、pip 包管理工具、常用的库、配置好环境路径等等。这些事情小白自己一个个去做的话,容易遇到各种问题,带来挫败感。如果你想用Python搞数据方面的事情,就安装它就好了,它甚至开发了一套JIT的解释器Numba。所以 Anaconda有了JIT之后,对线上科学计算效率要求比较高的东西也可以搞了。

四、编辑器:Sublime3

小白的话当然还是从PyCharm开始上手,但有时候写一些轻量的小脚本,就会想用轻量级一点的工具。Sublime3很多地方都有了极大的提升,并且用起来比原来还要简单。配合安装Anaconda或CodeIn插件,可以让 Sublime拥有近乎IDE的体验。

五、前端在线编辑器:CodeSandbox

虽然这个不算是真正意义上的Python开发工具,但如果后端工程师想写前端的话,这个在线编辑器太方便了,简直是节省了后端工程师的生命啊!不用安装npm的几千个包了,它已经在云端完成了,采让你直接就可以上手写代码、看效果。对于 React、Vue 这些主流前端框架都支持。算是一个补充吧。

大家的都侧重在写完整的python程序,要学习python,在它的shell中实验,探索新语言特性也是很方便的学习方法。一个方便,功能强大的交互式shell是探索、实验python的各种特性的好帮手,ipython。

最近喜欢上了eclipse,之前都用uestudio,但是公司不允许使用盗版软件,note基于图形界面的pad++也没有uestudio好用,所以,最终用上了eclipse,perl、Python、C++编程,都还好!

对于ja程序员,去学习python,pydev+eclipse应该是不错的选择。但对于python程序员选择会很多,初学者,安装activepython,自带的IDLE,非常不错,它是纯粹的python用TK写的,可以完成所有的单文件任务;熟练之后可以选择更专业的IDE,比如pycharm,专业的django开发IDE。对于我个人,认识python已经两年,更喜欢sublime text,一款非常有质感,而且功能非常有吸引力(比如它的多行修改功能,插件功能)的IDE,它可以为多种语言服务,并且对于python的以空格为区分语句的风格,sublime,非常不错!

pydev对于使用惯eclipse的就够了想尝试其他的IDE就试试pycharm

visual studio code怎么变成中文

1.

visual studio code怎么变成中文方法:首先打开visual studio code,使用快捷键“Ctrl+Shift+X”;然后在左侧“扩展”视图文本框中输入“Language Packs”,选择需要的中文语言插件进行安装,安装完成右下角会弹出一个重启按钮,点击重启即可。

VisualStudioCode结合了轻量级文本编辑器的易用性和大型IDE风格的功能,只需要极少的配置,但充其量也只能说它“还凑合”。在过去的几年,我做了很多PHP、JaScript以及其他与Web相关的开发工作(HTML、CSS、React、Python、Ruby)。

对于开发人员来说,代码编辑器是工具箱中最重要的组成部分之一。好的编辑器可以保护你的手腕和手指免受重复性劳损的伤害,在经历长时间的编码之后,它可以让你的眼睛免受失明的风险。与其他Web开发人员一样。

我也是从Sublime开始的。当时,代码编辑器领域的竞争还没有这么激烈。当Atom变得更加成熟时,我转向了Atom。我很快就在Atom中使用Nuclide来协助React和PHP开发。

我还使用过VIM。我也尝试了Eclipse和InliJ一小段时间,但我已经习惯了Atom和Sublime的按键绑定,所以感觉Eclipse和InliJ的不太好用。这就是我的编辑器选择之旅。

作为开发人员,我们有时喜欢走很长的路。我的意思是,它毕竟只是一款编辑器,又何必要如此煞费苦心呢?我的代码编辑器冒险之旅是VisualStudioCode。它带来了IDE风格的功能。

不仅具有经典轻量级代码编辑器的简单性,还提供了一些我想要但Atom可能永远不会提供的功能。

使用快捷键Ctrl + Shift + P,打印相关设置功能菜单,选择Configure Display Language"noImplicitAny": false,然后在左侧弹出可以安装相关的语言插件,选择中文简体(Chinese (simplifed) Languae),点击Install

使用VSCode编辑器如何开发AngularJS2应用程序

先来看个例子比较一下在 render 中不使用箭头函数的异。

这篇文章主要给大家介绍了关于利用VS Code如何开发你的个AngularJS 2应用程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友下面来一起看看吧。

当你再次点击 delete 按钮时,其他的用户再也不会调用 render 了!

之前已经给大家介绍了Angular2开发环境搭建教程之VS Code,本文将详细介绍利用VS Code如何开发AngularJS2应用程序的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

运行环境:

3、npm 3.10.8

4、TypeScript 2.0.3

创建项目

1、创建文件夹:angular2-quickstart,启动VS Code,打开刚创建的文件夹:angular2-quickstart。

2、在根文件夹(angular2-quickstart)下,创建package.json文件:

{"name": "angular-quickstart",

"version": "1.0.0",

"scripts": {

"start": "tsc && concurrently "tsc -w" "lite-server" ",

"lite": "lite-server",

"tinstall": "typings install",

"tsc": "tsc",

"tsc:w": "tsc -w",

"typings": "typings"

"lnse": "ISC",

"dependencies": {

"@angular/common": "~2.0.2",

"@angular/compiler": "~2.0.2",

"@angular/core": "~2.0.2",

"@angular/forms": "~2.0.2",

"@angular/": "~2.0.2",

"@angular/platform-browser": "~2.0.2",

"@angular/platform-browser-dynamic": "~2.0.2",

"@angular/router": "~3.0.2",

"@angular/upgrade": "~2.0.2",

"angular-in-memory-web-api": "~0.1.5",

"bootstrap": "^3.3.7",

"core-js": "^2.4.1",

"reflect-metadata": "^0.1.8",

"rxjs": "5.0.0-beta.12",

"js": "0.19.39",

"zone.js": "^0.6.25"

"devDependencies": {

"concurrently": "^3.1.0",

"lite-server": "^2.2.2",

"typescript": "^2.0.3",

}}3、在根文件夹(angular2-quickstart)下,创建tsconfig.json文件:

{"compilerOptions": {

"target": "es5",

"module": "commonjs",

"moduleResolution": "node",

"sourceMap": true,

"emitDecoratorMetadata": true,

"experimentalDecorators": true,

"removeComments": false,

}}4、在根文件夹(angular2-quickstart)下,创建typings.json文件:

{"globalDependencies": {

"core-js": "registry:dt/core-js#0.0.0+20160725163759",

"jaine": "registry:dt/jaine#2.2.0+20160621224255",

"node": "registry:dt/node#6.0.0+201609074046"

}}5、在根文件夹(angular2-quickstart)下,创建js.config.js(JaScript脚本)文件:

/

System configuration for Angular samples

Adjust as necessary for your application needs.

(function(global) {

System.config({

paths: {

// paths serve as alias

'npm:': 'node_modules/'

// map ls the System loader where to look for things

map: {

// our app is within the app folder

app: 'app',

// angular bundles

'@angular/core': 'npm:@angular/core/bundles/core.umd.js',

'@angular/common': 'npm:@angular/common/bundles/common.umd.js',

'@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',

'@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',

'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',

'@angular/': 'npm:@angular//bundles/.umd.js',

'@angular/router': 'npm:@angular/router/bundles/router.umd.js',

'@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',

// other libraries

'rxjs': 'npm:rxjs',

'angular-in-memory-web-api': 'npm:angular-in-memory-web-api',

// packages ls the System loader how to load when no filename and/or no extension

packages: {

app: {

main: './main.js',

defaultExtension: 'js'

rxjs: {

defaultExtension: 'js'

'angular-in-memory-web-api': {

main: './index.js',

defaultExtension: 'js'

}}

});

})(this);文件结构:

|_ angular2-quickstart

|_ app

| |_ appponent.ts

| |_ main.ts

|_ node_modules ...

|_ typings ...

|_ index.html

|_ package.json

|_ tsconfig.json

|_ typings.json安装依赖包(最关键一步)

使用 npm 命令来安装 package.json 中列出的依赖包。在命令行 cmd 窗口,输入:cd angular2-quickstart,进入angular2-quickstar文件夹下,输入下列命令:

npm install

创建TypeScript应用程序

1、在VS Code中,在根文件夹(angular2-quickstart)下,创建app子文件夹。

2、在子app文件夹下,创建TypeScript文件app.module.ts:

import { NgModule } from '@angular/core';

import { AppComponent } from './appponent';

@NgModule({

imports: [ BrowserModule ],

declarations: [ AppComponent ],

bootstrap: [ AppComponent ]

})

export class AppModule { }3、在子app文件夹下,创建TypeScript文件appponent.ts:

import { Component } from '@angular/core';

@Component({

selector: 'my-app',

template: '

我的个 AngularJS 2 应用程序

'

})

export class AppComponent { }4、在子app文件夹下,创建TypeScript文件main.ts:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app.module';

const platform = platformBrowserDynamic();

platform.bootstrapModule(AppModule);5、在根文件夹(angular2-quickstart)下,创建html文件index.html:

Angular QuickStart

Loading...

6、在根文件夹(angular2-quickstart)下,创建css文件styles.css:

/ Master Styles /

color: #369;

font-family: Arial, Helvetica, sans-serif;

font-size: %;

}h2,

h3 {

color: #444;

font-family: Arial, Helvetica, sans-serif;

font-weight: lighter;

}body {

margin: 2em;

}配置应用程序

1、在VS Code中,在根文件夹(angular2-quickstart)下,创建.vscode子文件夹。

2、在.vscode子文件夹下,创建settings.json文件:

// 将设置放入此文件中以覆盖默认值和用户设置。

{"typescript.tsdk": "node_modules/typescript/lib",

// ts 项目, 隐藏 .js 和 .js.map 文件

"files.exclude": {

"node_modules": true,

"/.js": { "when": "$(basename).ts" },

"/.js.map": true

}}3、在.vscode子文件夹下,创建tasks.json文件:

{// See

// for the documentation about the tasks.json format

"version": "0.1.0",

"command": "cmd",

"isShellCommand": true,

"showOutput": "always",

"args": ["/C npm start"]

}运行应用程序至此,配置完毕,按 Ctrl + Shift + B 编译,程序将会将Typescript编译成 Jascript ,同时启动一个 lite-server, 加载我们编写的index.html。 显示:我的个 Angular 2 应用程序

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

在React项目中如何使用Redux(详细教程)

在JaScript中如何实现数值自动增加

使用Swiper如何实现分页器使用

使用Swiper如何实现页面轮播

前端用什么编辑器

高效的Web前端开发工具:

1、Prettier Playground

Prettier是一个代码格式化程序,支持JaScript,包括ES2017、JSX、Angular、Vue、Flow、TypeScript等。它可以移除你的原始格式,并且将其替换为遵循运行方式的、标准的一致样式。如此便捷的工具在我们的编辑器中十分流行,与此同时它还有一个线上版本,可以在线完成对代码格式的修正。

运用CSS,非常简单的工具就是遇到困难时的救星。EnjoyCSS可以让你通过简单的UI设计你的元素,并且提供相关的CSS输出。

3、StackBlitz

根据Chidume Nnamdi显示,StackBlitz是每名使用者都很喜欢的一款在线编辑工具。最重要的一点就是,它将IDE引入了web——Visual Studio Code中。只要在StackBlitz中点击一下,你就可以设置Angular、React、Ionic、TypeScript、RxJS、Svelte以及其他JaScript框架。由于它的作十分便捷,在打开StackBlitz后的五秒之内,你就可以开始编辑代码了。

StackBlitz十分好用,尤其在尝试简化代码片段或在线数据库方面,你可能没有时间从头开始创建新的项目,而只是尝试新的功能。而通过StackBlitz不需要创建新的项目就可以在短短几分钟内试用新的NPM软件包。

4、P"typings": "^1.4.0"ostman

Postman就一直在我的开发人员工具集中。它在后端检查GET、POST、DELETE、OPTIONS和PUT在内的一系列端基于命令的工具的优点是,可配置高,效率快。缺点是,可发现性。适合配置项目很多,配置可以组合的情况。点这方面,起到了非常显著的作用。

5、CanIUse

CanlUse非常的简便,可以帮你弄清楚期望实现的功能,是否与你使用的浏览器兼容。很多开发者都会遇到浏览器的兼容问题,在这个浏览器上可以正常使用的,但换一个浏览器就不支持了。

6、Bit.dev

一个软件开发的基本原则就是代码的可重复使用性,它确保你可以减少开发量,而不需要去从头构建组件。这确实是Bit.dev可以做到的,它允许共享可重复使用代码片段和组件,从而减少开销,并且加快你的开发进程。Bit.dev还允许在团队之间共享组件,让你的团队可以与其他团队进行协作。

以上就是今天为大家分享的Web前端开发常用的6款提高工作效率的开发工具。大家要是想提供自己的工作效率,现在就赶紧用起来吧!

有哪些生成前端代码的神器呢?

1、Windows 10

在前端开发的过程中,很多相同的代码会写很多遍。如:开始新项目的时候,要写和旧项目类似脚手架代码;新建一个组件的时候,要按约定写组件结构。如果这些重复代码能用工具来生成,能提升前端的开发效率。

Version Lens package.json文件显示模块当前版本和版本

生成代码的工具分为两类:基于命令的和基于图像界面的。

基于图像界面的优点是,可发现性强,作简单。缺点是如果配置项很多,容易变得很难用。

罗嗦了一堆,下面开始介绍正题。

项目脚手架代码生成工具

项目脚手架主要做的项目的构建流程,环境的配置等。做到开箱即用。

基于命令的

yo 曾经流行过的一个脚手架生成工具。支持定义脚手架内容。基于 yo 的第三方脚手架也很多。

vue-cli 。 Vue 项目脚手架。支持自定义脚手架内容,感兴趣的可以读读 从vue-cli源码学习如何写模板。

create react app React 脚手架。比较轻量级,只是整合 webpack 和 react-router。

react boilerplate React 脚手架。比较重量级,整合了webpack 和 react router, redux, redux suga, reselect 等。

定制 Bootstrap 3

组件代码生成工具

基于命令的

react boilerplate 的 nam run generate 可生成组件的脚手架代码。

页面代码生成工具

基于命令的

代码编辑器的代码片段(Code Snippent)功能。主流的代码编辑器(Sublime,Atom,VS Code,Web Strom等) 都支持代码片段。也有写好的代码片段的编辑器插件。主流的框架基本都有对应的代码片段工具。

Emmet 提供 HTML,CSS,JS 的自动补全功能。

Bootstrap 3 Snippets

Vuejs Snippets

H5营销页面生成工具。有一大堆。

Maka

初夜

兔展

GrapesJS 强大的网页生成器。开源。

LayoutIt 托拽 Bootstrap 组件,生成页面。

Vite - 搭建 React 项目

/

日常放鸽,火钳刘明

这是一个基于 vite 搭建的 React 的项目,开发体验非常棒。

如上图,选择了 react-ts 预设模板,如果出现下图一样的工程

打开浏览器输入 ,如上图所示的话。那么恭喜你,你可以正常开发 React 项目了。 完结撒花

但上述只是一个基础的 React demo,在实际开发项目中,是远远不够的,需要额外做一些项目配置

根据日常的开发习惯,先进行基本的目录约定

改造 main.tsx

router/index.ts 文件配置

可以参考上述的配置,把其他的属性也配置进去,比如重定向(redirect)、懒加载等常见路由配置项

所有项目请求都放入 serv,建议每个模块都有对应的文件管理,如下所示

这样可以方便请求管理

base.ts 作为业务请求类,可以在这里处理一些业务特殊处理

until/request 作为统一引入的请求方法,可以自定义替换成 fetch、axios 等请求库,同时可以在此方法内封装通用拦截逻辑。

在具体业务开发使用的时候可以按照模块名引入,容易查找对应的接口模块

上述是针对项目做了一些业务开发上的配置与约定,各位同学可以根据自己团队中的规定与喜好行修改。

这里主要是关于 vite.config.ts 的配置,对项目整体做一些附加配置。

大体也是一些基本内容:

通过上述的简单改造,此时已经可以进行正常的小项目开发了。 完结撒花 !

并且已经在用此配置写了一个简单的 H5 项目,后续随着项目的迭代会逐步完善一下模板。

由于小程序的 markdown 兼容实在是有点,这一块用 H5 重写了

markdown 解析直接采用字节开源的 markdown 编辑器,不得不说,很 n!

emm},,期待尽早相见!

【报错】react 运行报错 Error: spawn powershell ENOENT

Output Colorizer 彩色输出信息

换了台电脑,运行react项目报了错误: Error: spawn powershell ENOENT ,完整如下:

Error: spawn powershell ENOENT ,这是因为Path环境变量下找不到powershell.exe,需要在Path环境变量添加powershell.exe所在的目录。powershell所在的目录是:C:WindowsSystem32WindowsPowerShellv1.0

电脑右键属性->高级系统设置->高级->环境变量->Path ->编辑 ->新建如图所具体通用拦截,请参考 axios 配置,或者自己改写即可,需要符合自身的业务需求。示环境变量,确认后,重启编辑器,重启项目 就可以了。

vs code 开发react用什么插件

JaScript Standard Style Standard风格

名称 简述

Auto Close Tag 自动闭合HTML标签

Auto Import TLess InliSense less变量与混合提示ypescript自动import提示

Auto Rename Tag 修改HTML标签时,自动修改匹配的标签

Beautify css/sass/scss/less css/sass/less格式化

Better Comments 编写更加人性化的注释

Bookmarks 添加行书签

Can I Use HTML5、CSS3、SVG的浏览器兼容性检查

Code Runner 运行选中代码段(支持大量语言,包括Node)

Code Spellchecker 单词拼写检查

CodeBing 在VSCode中弹出浏览器并搜索,可编辑搜索引擎

Color Highlight 颜色值在代码中高亮显示

Color Picker 拾色器

Document This 注释文档生成

ESLint ESLint插件,高亮提示

EditorConfig for VS Code EditorConfig插件

Emoji 在代码中输入emoji

File Peek 根据路径字符串,快速定位到文件

Font-awesome codes for html FontAwesome提示代码段

Git Blame 在状态栏显示当前行的Git信息

Git History(git log) 查看git log

GitLens 显示文件最近的commit和作者,显示当前行commit信息

Gulp Snippets Gulp代码段

HTML CSS Class Completion CSS class提示

HTML CSS Support css提示(支持vue)

HTMLHint HTML格式提示

htmltagwrap 包裹HTML

Import Cost 行内显示导入(import/require)的包的大小

Indenticator 缩进高亮

InliSense for css class names css class输入提示

JaScript (ES6) code snippets ES6语法代码段

JSON to TS JSON结构转化为typescript的intece

JSON Tools 格式化和压缩JSON

Lodash Lodash代码段

Log Wrapper 生产打印选中变量的代码

MochaSnippets Mocha代码段

Node modules resolve 快速导航到Node模块

Code Outline 展示代码结构树

Partial Diff 对比两段代码或文件

Path Autocomplete 路径完成提示

Path Inlisense 另一个路径完成提示

PostCss Sorting css排序

Prettify JSON 格式化JSON

Project Mar 快速切换项目

Quokka.js 不需要手动运行,行内显示变量结果

REST 发送REST风格的HTTP请求

React Native Storybooks storybook预览插件,支持react

React Playground 为编辑器提供一个react组件运行环境,方便调试

React Standard Style code snippets react standar风格代码块

Sass sass插件

Settings Sync VSCode设置同步到Gist

Sort Typescript Imports typescript的import排序

Sort lines 排序选中行

String Manipulation 字符串转换处理(驼峰、大写开头、下划线等等)

Syncing vscode设置同步到gist

TODO Parser Todo管理

TS/JS tfix completion ts/js前缀提示

TSLint TypeScript语法检查

Test Spec Generator 测试用例生成(支持chai、should、jaine)

TypeScript Import TS自动import

TypeSearch TS声明文件搜索

Types auto installer 自动安装@types声明依赖

VSCode Great Icons 文件图标拓展

View Node Package 快速打开选中模块的主页和代码仓库

VueHelper Vue2代码段(包括Vue2 api、vue-router2、vuex2)

filesize 状态栏显示当前文件大小

ftp-sync 同步文件到ftp

gitignore .gitignore文件语法

htmltagwrap 快捷包裹html标签

language-stylus Stylus语法高亮和提示

markdownlint Markdown格式提示

npm Inlisense 导入模块时,提示已安装模块名称

npm 运行npm命令

stylelint css/sass/less代码风格

vetur 目前比较好的Vue语法高亮

vscode-database 作数据库,支持mysql和tgres

vscode-icons 文件图标,方便定位文件

vscode-random 随机字符串生成器

vscode-styled-components styled-components高亮支持

vscode-styled-jsx styled-jsx高亮支持

[转]为什么在 React 的 Render 中使用箭头函数和 bind 会造成问题

import { BrowserModule } from '@angular/platform-browser';

原文转自s://

Color Info 小窗口显示颜色值,rgb,hsl,cmyk,hex等等

在 render 中使用箭头函数或绑定会导致子组件重新渲染,即使 state 并没有改变。作者使用提取子组件或在 HTML 元素中传递数据的方式来避免绑定。

这个例子中,我在 render 中使用一个箭头函数来绑定每个删除按钮对应的用户 ID。

点击 CodeSandbox 来查看及演示完整的 demo。(CodeSandbox 很酷,是一个 React 在线编辑器,可以实时编译和展示当前的界面。)

在 35 行中,我使用了一个箭头函数将一个值传递给了 deleteUser 函数,这就是问题的所在。

要查看为什么会这样,先来看看 User.js:

每次 render 调用时,控制台上都会打印日志。User 已经被声明为 PureComponent。所以 User 应该只在 props 或者 state 改变时才会重新 render。但是,当你点击 delete 按钮时, 对于每一个 User 实例,都会调用 render 。

原因在于:父组件在 props 中传递了一个箭头函数。 箭头函数在每次 render 时都会重新分配(和使用 bind 的方式相同) 。所以,尽管我将 User 声明为 PureComponent,User 的父组件中的箭头函数导致 User 组件为所有的用户实例传递了一个新的函数。所以当点击任何删除按钮时,每个用户实例都会重新 render。

结论:

避免在 render 中使用箭头函数和绑定。否则会打破 shouldComponentUpdate 和 PureComponent 的性能优化。

点击 CodeSandbox 查看和运行完整 demo。

在这个例子中,index.js 的 render 中没有箭头函数了。相关的数据被传到 User.js:

在 User.js 中,onDeleteClick 调用了在 props 中传递的 onClick 函数,并传递了相应的 user.id。

为了性能:

React + Redux 性能优化(一):理论篇