Commit Graph
7221 Commits
Author SHA1 Message Date
Dan Abramov 1c0b5dca5a Tweak the contributing wording in README 2016-09-27 23:32:57 +01:00
Dan Abramov c82bcefa93 Move How to Contribute to documentation and update it (#7817)
* Move How to Contribute to documentation and update it

* Consistent formatting
2016-09-27 23:20:49 +01:00
Christopher Chedeau 84f8df1f89 Track fiber tests (#7812)
Use the newly added tracking system to track the number of fiber tests that are passing/failing.

I first tried to modify the grunt lint rule for it and send the output in stdout but unfortunately grunt displays the rule + done messages there. I had like 30 lines of js already and I figured I could just write 3 lines of bash and it would work the same. Let me know if you want me to use another approach for it.

Test Plan:
Run the commands that have been introduced in this commit but the facts-tracker one
Run `echo $FIBER_TESTS` and make sure it prints `666/1434`
2016-09-26 14:54:27 -07:00
Christopher Chedeau fb1e7075ed Update travis.yml to use $GITHUB_USER_NAME and $GITHUB_USER_EMAIL (#7811)
See https://github.com/facebook/react/pull/7747#issuecomment-249677880 for discussions
2016-09-26 14:47:16 -07:00
imjanghyuk 6032491555 Update 07-forms.ko-KR.md (#7809)
fix spelling
2016-09-26 14:02:33 -07:00
Christopher Chedeau dbd9c4b205 Introduce facts-tracker (#7747)
* Introduce facts-tracker

We want to be able to track various things like number of files that are flowified, number of tests passing with Fiber...

This introduces a tool that lets you do that. The API is very simple, you execute the script with a list of tuples [key value] and it's going to create a `facts` branch and put a txt file for each fact and values over time.

```
node scripts/facts-tracker/index.js \
  "flow-files" "$COUNT_WITH_FLOW/$COUNT_ALL_FILES"
```

Test Plan:
This is tricky to test because Travis only exposes the private variables (github token) when it processes a committed file and not on branches. The reason is that otherwise anyone could send a pull requests that does `echo $GITHUB_TOKEN` and steal your token.

Given this constraint, I did all the work using two of my repos:
- https://github.com/vjeux/facts-tracker
- https://github.com/vjeux/facts-tracker-test

and am sending this pull request that should work as is /fingers crossed/, but we won't be able to test it out until it is committed.

Note that once this lands, I'm going to kill those two repos.

* Update with all the suggested changes

* Branch on a flow type in travis.yml

* Use $GITHUB_TOKEN

* properly escape it
2016-09-26 12:58:51 -07:00
jinmmd d9957ac075 Change [入门教程] from "tutorial.html" to "tutorial-zh-CN.html" (#7789) 2016-09-26 10:39:34 -07:00
jinmmd 5331dfd1a5 Change [API参考] from "top-level-api.html" to "top-level-api-zh-CN.html" (#7790) 2016-09-26 10:39:03 -07:00
Andy Edwards b7c70b67af Clarify manual PropType calls warning (#7777) 2016-09-22 14:59:01 +01:00
Dan Abramov 13692d59ad Update broken JSFiddle in Why React blog post (#7783)
Fixes #7782
2016-09-21 13:42:49 +01:00
Paul O’Shannessy 00ac1797d7 Adjust code to handle more availability of function.name (#7670) 2016-09-20 14:23:46 -07:00
Paul O’Shannessy 2058d47e7b [docs] Update React Rally 2016 videos link (#7771) 2016-09-19 14:26:32 -07:00
Paul O’Shannessy 7b0d5d0e74 Update website for 15.3.2
(cherry picked from commit b52ea6bd8f)
2016-09-19 11:14:30 -07:00
Paul O’Shannessy af28c5cd73 Update Changelog & Readme for 15.3.2
(cherry picked from commit 8c7bbbfc21)

Fix formatting of 15.3.2 changelog

(cherry picked from commit c2388bf09b)
2016-09-19 11:14:16 -07:00
Ivan Zotov 2ec2d8f7f7 Fix links and ids for tips in docs (#7766) 2016-09-19 17:50:26 +03:00
Ivan Zotov 4dd554c9b7 Russian translation for style props value px of tips (#7742)
* Russian translation for style props value px of tips

* Update 06-style-props-value-px.ru-RU.md
2016-09-19 13:57:42 +03:00
Ivan Zotov 8176f4970c Russian translation for max. numbers of jsx root nodes (#7738)
* Russian translation for max. numbers of jsx root nodes

* Update 05-maximum-number-of-jsx-root-nodes.ru-RU.md
2016-09-19 13:45:09 +03:00
Ivan Zotov 7d5c70d98c Russian translation for self-closing-tag of tips (#7729)
* Russian translation for self-closing-tag of tips

* Fix next link for inline styles tip

* Update 04-self-closing-tag.ru-RU.md
2016-09-19 13:39:46 +03:00
Brandon Dail 7dfa01f9fa Revert ReactMultiChild to plain object (#7757)
Since ReactART and RN extend ReactMultiChild, changing it to a class is
a breaking change. See
https://github.com/facebook/react/pull/7736/files#r79073698
2016-09-17 10:40:23 -05:00
Uladzimir Havenchyk 65870dcaee Simplify event phases. Use explicitly 'captured' and 'bubbled'. (#7741) 2016-09-15 23:24:56 -07:00
Brandon Dail c78464f8ea Resolve flow errors with ReactTestRenderer (#7736)
* Resolve flow errors with ReactTestRenderer

* Add whitespace between types and methods

* extend ReactMultiChild instead of using Object.assign

* Use ReactElement type from ReactElementType

* Make ReactMultiChild a class
2016-09-15 11:44:56 -05:00
Paul O’Shannessy 864bc7b939 Update ignores in flowconfig (#7722)
This ensures we ignore relative to our project root and won't be tripped up by issues where checkouts in other places result in Flow passing when it shouldn't (eg on Travis CI where the checkout path is `/home/travis/build/facebook/react`)
2016-09-14 14:57:31 -07:00
Ivan Zotov 79367b09f7 Russian translation if-else in JSX of tips (#7726) 2016-09-14 15:05:21 +03:00
Ivan Zotov fcc37ccaa2 Russian translation for inline styles of tips (#7717) 2016-09-14 13:26:36 +03:00
Ivan Zotov 7d76bdad69 Fix Russian translation of introduction to be more technical (#7727) 2016-09-14 13:23:57 +03:00
Brandon Dail 5a3abab660 Clean up ReactTestRenderer (#7716)
* create ReactTestTextComponent fil

* create ReactTestEmptyComponent

* Use class for ReactTestRenderer

* Add flow to ReactTestRenderer
2016-09-13 21:20:41 -05:00
Stephen John Sorensen b2297ae6c3 remove plain object warning (#7724) 2016-09-13 19:15:07 -07:00
Ben Alpert 9eba80825f Unify branches in cloneFiber (#7723) 2016-09-13 17:42:15 -07:00
Andrew Clark 6144212a86 [Fiber] Animation priority work (#7466)
* High priority work

Adds the ability to schedule and perform high priority work. In the
noop renderer, this is exposed using a method `performHighPriWork(fn)`
where the function is executed and all updates in that scope are given
high priority.

To do this, the scheduler keeps track of a default priority level.
A new function `performWithPriority(priority, fn)` changes the default
priority before calling the function, then resets it afterwards.

* Rename overloaded priority terms

"High" and "low" priority are overloaded terms. There are priority
levels called HighPriority and LowPriority. Meanwhile, there are
functions called {perform,schedule}HighPriWork, which corresponds
to requestAnimationFrame, and {perform,schedule}LowPriWork, which
corresponds to requestIdleCallback. But in fact, work that has
HighPriority is meant to be scheduled with requestIdleCallback.
This is super confusing.

To address this, {perform,schedule}HighPriWork has been renamed
to {perform,schedule}AnimationWork, and
{perform,schedule}LowPriWork has been renamed to
{perform,schedule}DeferredWork. HighPriority and LowPriority
remain the same.

* Priority levels merge fix
2016-09-13 16:46:32 -07:00
Sebastian Markbåge 3e54b28c20 Merge pull request #7344 from acdlite/fibersetstate
[Fiber] setState
2016-09-13 15:31:14 -07:00
Sebastian Markbage 27d1210c1d Log the updateQueue in dumpTree
This also buffers all rows into a single console.log call.
This is because jest nows adds the line number of each console.log
call which becomes quite noisy for these trees.
2016-09-13 15:26:48 -07:00
Sebastian Markbage f3a2dc252e Check for truthiness of alternate
This is unfortunate since we agreed on using the `null | Fiber`
convention instead of `?Fiber` but haven't upgraded yet and this
is the pattern I've been using everywhere else so far.
2016-09-13 15:26:48 -07:00
Andrew Clark 0ca1cea26a Don't mutate current tree before work is committed.
We should be able to abort an update without any side-effects to the
current tree. This fixes a few cases where that was broken.

The callback list should only ever be set on the workInProgress.
There's no reason to add it to the current tree because they're not
needed after they are called during the commit phase.

Also found a bug where the memoizedProps were set to null in the
case of an update, because the pendingProps were null. Fixed by
transfering the props from the instance, like we were already doing
with state.

Added a test to ensure that setState can be called inside a
callback.
2016-09-13 15:26:48 -07:00
Andrew Clark f514662ca0 forceUpdate
Adds a field to the update queue that causes shouldComponentUpdate to
be skipped.
2016-09-13 15:26:48 -07:00
Andrew Clark d8c24cfa78 replaceState
Adds a field to UpdateQueue that indicates whether an update should
replace the previous state completely.
2016-09-13 15:26:48 -07:00
Andrew Clark 1d49237299 Update callbacks
Callbacks are stored on the same queue as updates. They care called
during the commit phase, after the updates have been flushed.

Because the update queue is cleared during the completion phase (before
commit), a new field has been added to fiber called callbackList. The
queue is transferred from updateQueue to callbackList during completion.
During commit, the list is reset.

Need a test to confirm that callbacks are not lost if an update is
preempted.
2016-09-13 15:26:47 -07:00
Andrew Clark c6db7f73be Rename stateQueue -> updateQueue
Also cleans up some types.
2016-09-13 15:26:47 -07:00
Andrew Clark f7dab22ac9 Ensure that setState update function's context is undefined 2016-09-13 15:26:47 -07:00
Andrew Clark 97dac74c40 Use ReactInstanceMap
Move ReactInstanceMap to src/renderers/shared/shared to indicate that
this logic is shared across implementations.
2016-09-13 15:26:47 -07:00
Andrew Clark d218158d22 Clean up
Use a union type for the head of StateQueue.
2016-09-13 15:26:47 -07:00
Andrew Clark 691e053650 Fix stateQueue typing 2016-09-13 15:26:47 -07:00
Andrew Clark 909caccebd Clean up
Rather than bubble up both trees, bubble up once and assign to the
alternate at each level.

Extract logic for adding to the queue to the StateQueue module.
2016-09-13 15:26:47 -07:00
Andrew Clark 25d199abe0 Updater form of setState
Add support for setState((state, props) => newState).

Rename pendingState to stateQueue.
2016-09-13 15:26:47 -07:00
Andrew Clark 8b200c5e78 Use queue for pendingState
Changes the type of pendingState to be a linked list of partial
state objects.
2016-09-13 15:26:47 -07:00
Andrew Clark 94d2317b4b setState for Fiber
Updates are scheduled by setting a work priority on the fiber and bubbling it to
the root. Because the instance does not know which tree is current at any given
time, the update is scheduled on both fiber alternates.

Need to add more unit tests to cover edge cases.
2016-09-13 15:26:46 -07:00
Sebastian Markbåge a19fede67c Merge pull request #7636 from sebmarkbage/fiberrefactor
[Fiber] Refactor Pending Work Phase and Progressed Work
2016-09-13 15:24:52 -07:00
Sebastian Markbage 52011d58b0 Restructure clone child fiber a bit to make it clearer 2016-09-13 14:58:00 -07:00
Sebastian Markbage a7afc064bd Pass current instead of picking it up from alternate
This colocates the reliance on alternate with the scheduler, so
that we have the option to not use this, or more easily break
apart the initial mount phase into an optimized path.
2016-09-13 14:57:59 -07:00
Sebastian Markbage 8b0be68eee Progressed work 2016-09-13 14:57:59 -07:00
Sebastian Markbage b717db00fb Add shouldComponentUpdate to functional components
I'll probably end up reverting this before the bigger release
since it is not part of the official public API. However,
it is useful to be able to compare the performance between
functional components and classes.
2016-09-13 14:57:59 -07:00