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

Add wrapExport option for wrapping exported function #475

Merged
merged 1 commit into from
Mar 28, 2019
Merged

Conversation

pshrmn
Copy link
Contributor

@pshrmn pshrmn commented Mar 19, 2019

Add a memo compiler option to wrap the generated component in a React.memo call. This could help prevent unnecessary renders if any of the components define objects/arrays/functions inline.

mdx(content, {
  memo: true
})
function MDXContent({ components, ...props }) {
  // ...
}
export default React.memo(MDXContent);

I had to re-organize that code strings a little bit in order to do this. Hopefully that is okay because doing it with template expressions was a bit messy.

@vercel
Copy link

vercel bot commented Mar 19, 2019

This pull request is automatically deployed with Now.
To access deployments, click Details below or on the icon next to each push.

@vercel vercel bot temporarily deployed to staging March 19, 2019 20:26 Inactive
@pshrmn
Copy link
Contributor Author

pshrmn commented Mar 19, 2019

Argh, the failing test has to do with the whitespace change. I'll have to see if I can't finagle VSCode or make the changes in a different editor if that fails.

@vercel vercel bot temporarily deployed to staging March 20, 2019 00:01 Inactive
@vercel vercel bot temporarily deployed to staging March 20, 2019 13:06 Inactive
@vercel vercel bot temporarily deployed to staging March 21, 2019 16:03 Inactive
@pshrmn pshrmn changed the title Add memo option for wrapping output in React.memo Add wrapExport option for wrapping exported function Mar 21, 2019
@vercel vercel bot temporarily deployed to staging March 21, 2019 16:20 Inactive
@johno
Copy link
Member

johno commented Mar 28, 2019

Thanks!

@johno johno merged commit 870a1d0 into mdx-js:v1 Mar 28, 2019
@johno
Copy link
Member

johno commented Mar 28, 2019

Published as 1.0.0-alpha.11.

@pshrmn pshrmn deleted the memo branch March 28, 2019 19:36
johno added a commit that referenced this pull request Apr 4, 2019
* Replace MDXTag with custom pragma (#401)

* it works

* commit to be removed: my-site-2

* remove mdxtag for layout

* [remove this] more my-site examples

* remove

* merge-conflict

* snapshots

* Remove my-site-2

* Clean up create element code

* Fix tests

* Fix props handling, remove mdx pragma from JSX output

* Update pragma implementation in loader and parcel plugin

* Update runtime to properly provide components for mdx pragma

* Allow for merging of components passed to context with a function (#411)

If a function is passed to the theme provider it is invoked
with the out context's components. This allows users to opt
in to merging those components.

Related #410

* feat: Convert withMDXComponents to use hooks (#417)

* Update tests after rebase

* Use remark-mdx in core as a syntactic extension to remark (#439)

* Implement support for Some.Component style JSX blocks

* Add failing test for string interpolation

* Add failing test for js functions as props

* Add failing test for js functions as props with returns

* Make value parsing for JSX props more flexible

* Don't lint fixtures file

* Add nested object props fixture

* Add another fixture for randomly placed brackets

* Add link shortcut to fixture

* Remove object props since it is a subset of js props

* Begin implementing core remark-mdx usage

* Replace MDXTag with custom pragma (#401)

* it works

* commit to be removed: my-site-2

* remove mdxtag for layout

* [remove this] more my-site examples

* remove

* merge-conflict

* snapshots

* Remove my-site-2

* Clean up create element code

* Fix tests

* Fix props handling, remove mdx pragma from JSX output

* Update pragma implementation in loader and parcel plugin

* Update runtime to properly provide components for mdx pragma

* Allow for merging of components passed to context with a function (#411)

If a function is passed to the theme provider it is invoked
with the out context's components. This allows users to opt
in to merging those components.

Related #410

* feat: Convert withMDXComponents to use hooks (#417)

* Continue working on integrating remark-mdx

* Ensure proper remark-mdx is used for workspaces

* Add next publish script

* v1.0.0-alpha.0

* Add useMDXComponents hook (#440)

* Add useMDXComponents hook

* Update snapshot

* Automatically merge outer context for components in the provider (#441)

* Automatically merge outer context for components in the provider

Closes #410

* Fix failing test

* Improve test name

* Convert MDXContent to a function component (#427)

* Convert MDXContent to a function component

* Move Layout definition outside of component

* Rename Layout to MDXLayout and don't initialize it if layout is not set

* Fix snapshot

* Fix rebase

* Add more involved usage docs

* Add nav for api doc

* Move API docs to main advanced page

* v1.0.0-alpha.1

* Fix inline comments (#456)

Closes GH-450.

* [WIP] Implement basic Vue support (#455)

Implement basic Vue support

* Ignore imports used in exports when parsing (#461)

* v1.0.0-alpha.6

* Update docs/advanced/index.md

Co-Authored-By: johno <[email protected]>

* Use mdxType as prop name (#462)

In some cases it might be desired to access
the type prop. This namespaces it with mdx
to become mdxType. This shouldn't clash with
most components and allows wrapper to more
easily inspect its children's type like you
would with most React elements.

* v1.0.0-alpha.7

* Mdx wrapper guide (#467)

* Begin wrapper guides

* Finish spiking out first pass of wrapper guide

* Rename mdPlugins/hastPlugins to remarkPlugins/rehypePlugins (#468)

Closes #465

* Remove trailing space from prop-less JSX tags (#477)

* wrapper replacement (#479)

* Fix remark-mdx readme title (#481)

* v1.0.0-alpha.8

* Change wrapper default element to React.Fragment (#470)

* Change wrapper default element to React.Fragment

* Add test

* Fix snapshot

* v1.0.0-alpha.9

* Raw nodes should always be of type jsx (#484)

* pass filename to babel transform if present (#485)

* Fix test suite

* v1.0.0-alpha.10

* Add wrapExport option for wrapping exported fn (#475)

* v1.0.0-alpha.11

* Pull in proper remark-mdx version

* Rename tag package to react, move create-element to new package (#487)

* Update docs for new react package name (#490)

* v1.0.0-alpha.12

* v1.0.0-alpha.13

* Add remove exports plugin (#488)

* v1.0.0-alpha.14

* Fix missing loader dep (#491)

* v1.0.0-alpha.15

* Fix missing 'create-element' file (#493)

* v1.0.0-alpha.16

* Export mdx from main @mdx-js/react module (#495)

* v1.0.0-alpha.17

* Move to babel v7 (#494)

* Move to babel v7

* Add microbundle

* V1 docs update (#498)

* Add basic gatsby setup for docs

* Remove x0 from root package

* Add Head component

* Update to latest rebass

* Add docs layout component

* Reorganize UI components in docs

* Remove _app.js component from docs

* Add basic styles, header, and pagination to docs

* Add basic responsive menu styles to docs

* Adjust styles in docs

* Adjust getting started page

* Update now config for new docs setup

* Move to babel v7 (#494)

* Move to babel v7

* Add microbundle

* Fix loader test

* Update live editor for v1, make docs a workspace

* Refactor docs header and fix code editor styles

* Use scoped styles in docs sidebar and pagination

* Adjust edit link url

* Add basic gatsby setup for docs

* Remove x0 from root package

* Add Head component

* Update to latest rebass

* Add docs layout component

* Reorganize UI components in docs

* Remove _app.js component from docs

* Add basic styles, header, and pagination to docs

* Add basic responsive menu styles to docs

* Adjust styles in docs

* Adjust getting started page

* Update now config for new docs setup

* Fix loader test

* Update live editor for v1, make docs a workspace

* Refactor docs header and fix code editor styles

* Use scoped styles in docs sidebar and pagination

* Adjust edit link url

* Fix eslint ignore config

* Implement banner, add migration guide
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants