Commit Graph

8026 Commits

Author SHA1 Message Date
Brian Vaughn
f546505e4e Support for ReactFeatureFlags.logTopLevelRenders timing (#8687)
Call `console.time` / `console.timeEnd` for the top level component when `ReactFeatureFlags.logTopLevelRenders` is enabled
2017-01-21 09:44:47 -08:00
Sebastian Markbåge
4f8c16a750 Read "current" props from the node instead of the Fiber (#8839)
It's not just events that read the current props. Controlled components
do as well. Since we're no longer updating the Fiber pointer during updates
we have to instead read from the node props to get the current props.

Since this method is no longer just used for events I renamed it.
2017-01-20 23:25:25 -08:00
EugeneGarbuzov
30c7c4fbe6 Corrected a typo. (#8837)
shoud -> should
2017-01-20 13:25:21 -06:00
Sebastian Markbåge
b354db22a9 [Fiber] Compute the Host Diff During Reconciliation (#8607)
* Allow renderers to return an update payload in prepareUpdate

This then gets stored on updateQueue so that the renderer doesn't need to
think about how to store this.

It then gets passed into commitUpdate during the commit phase.

This allows renderers to do the diffing during the time sliced path,
allocate a queue for changes and do only the absolute minimal work to
apply those changes in the commit phase.

If refs update we still schedule and update.

* Hack around the listener problem

* Diff ReactDOMFiber properties in prepareUpdate

We now take advantage of the new capability to diff properties early.
We do this by generating an update payload in the form of an array with
each property name and value that we're about to update.

* Add todo for handling wasCustomComponentTag

* Always force an update to wrapper components

Wrapper components have custom logic that gets applied at the commit phase
so we always need to ensure that we schedule an update for them.

* Remove rootContainerInstance from commitMount

No use case yet and I removed it from commitUpdate earlier.

* Use update signal object in test renderer

* Incorporate 8652 into new algorithm

* Fix comment

* Add failing test for flipping event handlers

This illustrates the problem that happens if we store a pointer to the
Fiber and then choose not to update that pointer when no properties change.
That causes an old Fiber to be retained on the DOM node. Then that Fiber
can be reused by the pooling mechanism which then will mutate that Fiber
with new event handlers, which makes them active before commit.

* Store current props in the RN instance cache and on the DOM node

This represents the current set of event listeners. By not relying on the
Fiber, it allows us to avoid doing any effects in the commit phase when
nothing changes.

This is a bit ugly. Not super happy how this all came together.
2017-01-19 21:56:15 -08:00
Dan Abramov
c6a7dc7f24 Preserve license headers from dependencies in minified build (#8803)
* Preserve license headers from dependencies in minified build

Fixes #8789.

* Bump minimal object-assign version
2017-01-20 02:29:06 +01:00
Keyan Zhang
06399b8ce3 Add "Handling Multiple Inputs" to Forms doc (#8552)
* added "Handling Multiple Inputs"

* renamed and added a codepen

* simplified the example
2017-01-17 22:19:46 -08:00
Brian Vaughn
16abcef937 Tweaked captured error log slightly based on feedback (#8785)
Tweaked captured error log slightly based on feedback. Normalized stack format/display for different browsers
2017-01-17 14:32:06 -08:00
Dan Abramov
935bdbec84 Ignore fixtures in Flow and ESLint 2017-01-17 19:26:27 +00:00
Rohan Nair
5d96162b57 Updating Thinking in React doc to replace refs with event handlers (#8815)
* Updating Thinking in React doc to replace refs

* Updating doc copy to reflect changes to example
2017-01-17 10:17:32 -08:00
Faheel Ahmad
c8a41672ed I -> we (#8817) 2017-01-17 10:01:40 -08:00
DQNEO
6308238498 use an easier word (#8809)
* use an easier word

The word `mandatory` is relatively difficult for people with ESL (English as a second language), so I propose an alternative word.
This would be much easier to understand.

* use simpler word
2017-01-17 10:00:11 -08:00
Jack Cross
bfd5b1878e Add Flow reminder to PR template (#8805)
* Added flow to PR template

* Added record-tests step to PR template and contribution docs

* Updated order of PR checks
2017-01-17 06:34:44 -08:00
Rich Harris
e69ff955f4 add docs for building with Rollup (#8799)
* add docs for building with Rollup

* Tiny unrelated fix
2017-01-17 05:55:49 -08:00
Toru Kobayashi
0758bb0035 Fix to work fiber debugger with npm start (#8811)
* FiberDebugger uses packages built in local

* Fix key warnings in FiberDebugger

* Remove react packages from package.json and yarn.lock for using pacakges built in local

* Remove fiber.js from `files` in package.json
2017-01-17 05:34:02 -08:00
Superlaziness
66540fdf16 fix HOC doc (#8802) 2017-01-16 06:49:01 -08:00
Tom Gasson
c77632791f Fix fiber/record-tests to work on windows (slash differences) (#8796) 2017-01-14 21:16:03 -06:00
Eric Churchill
cd4afca043 Add unit test to onlyChild to ensure onlyChild returns child element (#8667)
Add unit test to onlyChild to ensure onlyChild returns child element
2017-01-14 14:09:24 -08:00
Vladimir Tikunov
ebd83e809e Remove error ref to the 'render' function (#8781)
What is the `render` function of a functional component?
2017-01-14 13:36:55 -06:00
Dan Abramov
6a488913b9 [Fiber] Fix rendering SVG into non-React SVG tree (#8638)
* Add a test for rendering SVG into a non-React SVG tree

It is failing in Fiber.

* Add a test for rendering HTML into non-React foreignObject

It happens to pass in Fiber.

* Determine root namespace by container namespace, not just tag

A tag alone is not enough to determine the tree namespace.

* Skip the test that exhibits jsdom bug in non-createElement mode

jsdom doesn't give HTML namespace to foreignObject.innerHTML children.
This problem doesn't exist in the browsers.

https://github.com/facebook/react/pull/8638#issuecomment-269349642

We will skip this test in non-createElement mode considering
that non-createElement mounting is effectively dead code now anyway.
2017-01-14 05:11:51 -08:00
Brian Vaughn
7817eb08f3 Replaced an Update effect in complete phase with a Ref effect
Also removed an unnecessary conditional check and improved a flow cast.

Relates originally to PRs #8646 and #8685
2017-01-13 15:32:49 -08:00
Brian Vaughn
be0de3455b Log all Fiber errors w/ component stack (#8756)
A new module has been added (ReactFiberErrorLogger). This logs error information (call stack and component stack) to the console to make errors easier to debug. It also prompts users to use error boundaries if they are not already using them.

In the future, perhaps this will be injectable, enabling users to provide their own handler for custom processing/logging. For the time being, this should help with issues like this / #2461.
2017-01-13 14:45:56 -08:00
Brian Vaughn
c359df7d58 Merge pull request #8645 from bvaughn/add-failing-scu-current-props-test
Added memoization test for interrupted low-priority renders
2017-01-13 13:52:01 -08:00
Brian Vaughn
2fb07b9502 Added memoization test for interrupted low-priority renders
Test added to verify that a high-priority update can reuse the children from an aborted low-priority update if shouldComponentUpdate returns false.
2017-01-13 13:46:20 -08:00
Iurii Kucherov
20c4aac9ec Update higher-order-components.md (#8780) 2017-01-13 13:17:48 -08:00
Brian Vaughn
3bc5595dfd Merge pull request #8742 from bvaughn/stack-fiber-gcc-warning
Warn about missing getChildContext method
2017-01-13 08:45:29 -08:00
Piper Chester
c61148ca58 Fix typo (#8770) 2017-01-13 05:19:23 -08:00
Diego Muracciole
de8173e567 Small ReactPropTypes refactor (#8771) 2017-01-13 04:53:18 -08:00
Dan Abramov
5afd8cd704 Improve Fiber debugger (#8767)
* Simplify the hooks
* Capture completion at the right moment
* Animate the scroll with the fiber on the stack
* Better display priorities
2017-01-13 04:41:56 -08:00
Brian Vaughn
7a2e35b93b Improved error message wording for missing getChildContext() method 2017-01-12 17:11:53 -08:00
Brian Vaughn
e17cc98a89 Removed redundant gCC test 2017-01-12 16:58:36 -08:00
Brian Vaughn
4f08884b5d Dedupe missing getChildContext warning by component name 2017-01-12 16:58:36 -08:00
Brian Vaughn
c7f1abade5 Stack and Fiber warn about missing getChildContext method
Previous (probably unintentional) behavior of Stack was to allow components to define childContextTypes without also supplying a getChildContext property. This PR updates Fiber to (temporarily) mimic that behavior. It also adds warning messages to both Fiber and Stack (along with a test).

For the time being, Fiber components with a missing getChildContext method will return the parent context as-is, after warning.
2017-01-12 16:58:36 -08:00
Andrew Clark
199db638c4 Merge pull request #8655 from acdlite/fibermemoizepremptedwork
[Fiber] Move memoization to begin phase
2017-01-12 16:08:02 -08:00
Andrew Clark
d28ac9eea0 Merge pull request #8757 from acdlite/fiberfeatureflag
Add feature flag to disable Fiber-only features
2017-01-12 13:52:32 -08:00
Andrew Clark
9459bad912 Run test script and fix regressions
Fixes the case where there's an uncaught error and the root unmounts.
We implement this by rendering the root as if its child is null. Null is
not usually allowed at the top level, so we need to special case it.
2017-01-12 13:51:22 -08:00
Andrew Clark
c8adedc054 Warn if undefined is passed to top-level render
Moved the top-level check to ReactChildFiber like the other ones
2017-01-12 13:51:22 -08:00
Andrew Clark
397810f844 Top-level render only accepts a React element if feature flag is on 2017-01-12 13:51:15 -08:00
Ben Alpert
54ebcbcd18 Add test for state merging when sCU is false 2017-01-12 12:04:33 -08:00
Dan Abramov
fd1ef53711 [Fiber Debugger] Bring up to date (#8765)
* Ignore orphaned fibers in the debugger

* Remember last entered code via localStorage

* Update Create React App

* Minor fixes

* Dogfood Fiber
2017-01-12 11:55:59 -08:00
Andrew Clark
d17b9a13f8 Confirm that a shallow bailout does not drop work in the child
Includes a test that confirms that work that is bailed out before
completing can be reused without dropping the entire subtree.
2017-01-12 11:55:52 -08:00
Andrew Clark
1ed304fa87 Move memoization to begin phase
Currently we update the memoized inputs (props, state) during the
complete phase, as we go back up the tree. That means we can't reuse
work until of its children have completed.

By moving memoization to the begin phase, we can do a shallow bailout,
reusing a unit of work even if there's still work to do in its children.

Memoization now happens whenever a fiber's `child` property is updated;
typically, right after reconciling. It's also updated when
`shouldComponentUpdate` returns false, because that indicates that the
given state and props are equal to the memoized state and props.
2017-01-12 11:55:52 -08:00
Paul O’Shannessy
8835955218 Add error codes update to release process (#8749)
* Add error codes update to release process

* Update
2017-01-12 07:13:04 -08:00
Whien
3ec1da800d move blog post [Profiling Components with Chrome Timeline] into docs article (#8680)
* move blog post into docs article

* move to second section and changed description

* Minor tweak
2017-01-12 07:06:15 -08:00
俞火江
e240470cf1 fix failed tests on Windows #8737 (#8747)
* fix failed tests on Windows #8737

* Use regexp literal instead of `RegExp` constructor so that we don't need to bother with escaping special character like `\` and `.`.
Note that by removing the path separator in regexp, I've relaxed the matching condition a little.Since there's little chance we have files like `XXXReact.d.ts`,it should not matter.
2017-01-12 06:46:23 -08:00
Liangzhen Zhu
cb82bc37b6 fix typo (#8760)
It seems that the class name in comments should be CallbackQueue
2017-01-12 06:31:40 -08:00
Snowmanzzz(Zhengzhong Zhao)
2cb7637607 Update handling-events.md (#8762)
* Update handling-events.md

* Update handling-events.md
2017-01-12 06:30:43 -08:00
Andrew Clark
80cf21cae4 In DEV, allow treat auto-mocked render methods as if they return null
Consider deprecating this in the future.
2017-01-11 18:06:16 -08:00
Andrew Clark
204d3dd703 Throw if undefined is returned from a composite component 2017-01-11 18:01:44 -08:00
Andrew Clark
86280187d7 Disallow Fiber-only render return types when feature flag is on
Except for portals, which we use in some places.
2017-01-11 18:01:36 -08:00
Andrew Clark
bf117f82e1 Add feature flag to disable Fiber-specific features
We'll enable this in www in case we need to roll back to Stack.
2017-01-11 17:41:13 -08:00