Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

change class component to function component #6451

Merged
merged 3 commits into from
Mar 11, 2019
Merged

change class component to function component #6451

merged 3 commits into from
Mar 11, 2019

Conversation

xiaoxiangmoe
Copy link
Contributor

No description provided.

@xiaoxiangmoe
Copy link
Contributor Author

Should we use named export in TypeScript?
Why we use default export in almost all codes of react doc?
@gaearon

@iansu iansu self-assigned this Feb 28, 2019
@iansu iansu added this to the 3.0 milestone Feb 28, 2019
packages/react-scripts/template-typescript/src/App.tsx Outdated Show resolved Hide resolved
packages/react-scripts/template/src/App.js Outdated Show resolved Hide resolved
Co-Authored-By: xiaoxiangmoe <xiaoxiangmoe@gmail.com>
Co-Authored-By: xiaoxiangmoe <xiaoxiangmoe@gmail.com>
@@ -1,28 +1,26 @@
import React, { Component } from 'react';
import * as React from 'react';
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wouldn't import React, { FC } from 'react'; be more consistent in spirit to the current class-based version?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@denisw In TypeScript Doc it write:

import * as React from "react";

Should we use named export rather than default export?

Copy link

@denisw denisw Mar 6, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, import * as React is what you would need to do by default, but create-react-app's TypeScript configuration has allowSyntheticDefaultImports option enabled. From the documentation:

Allow default imports from modules with no default export. This does not affect code emit, just typechecking.

As the code emit part is taken care of by Babel here, import React "just works" the same way it does for the JavaScript setup.

@iansu
Copy link
Contributor

iansu commented Mar 11, 2019

Thanks!

JoviDeCroock added a commit to JoviDeCroock/create-react-app that referenced this pull request Mar 15, 2019
* masterd: (24 commits)
  Add TypeScript linting support (facebook#6513)
  Support React Hooks (facebook#5602) (facebook#5997)
  Support browserslist in @babel/preset-env (facebook#6608)
  Add empty mock for http2 (facebook#5686)
  Add note about npx caching (facebook#6374)
  change named import into default import (facebook#6625)
  Stage files for commit after ejecting (facebook#5960)
  Upgrade dependencies (facebook#6614)
  Make compiler variable const instead of let (facebook#6621)
  Type check JSON files (facebook#6615)
  Change class components to functional components in templates (facebook#6451)
  Convert JSON.stringify \n to os.EOL when writing tsconfig.json (facebook#6610)
  Update html-webpack-plugin (facebook#6361)
  Enable click to go to error in console for TypeScript (facebook#6502)
  Update webpack-dev-server to 3.2.1 (facebook#6483)
  [docs] revert removal of newlines from html (facebook#6386)
  Publish
  Prepare 2.1.8 release
  Reapply "Speed up TypeScript v2 (facebook#6406)" (facebook#6586)
  Publish
  ...

# Conflicts:
#	packages/babel-preset-react-app/create.js
#	packages/react-scripts/scripts/build.js
@lock lock bot locked and limited conversation to collaborators Mar 16, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants