-
Notifications
You must be signed in to change notification settings - Fork 46.8k
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
Updates ViewConfig types to delegate isInAParentText context #29872
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Comparing: 3154ec8...224892e Critical size changesIncludes critical production bundles, as well as any change greater than 2%:
Significant size changesIncludes any change greater than 0.2%: Expand to show
|
Now that HostContext determination for Fabric is a DEV-only behavior, we can move the HostContext determination to resolve from the ViewConfig for a given type. Doing this will allow arbitrary types to register themselves as potential parents of raw text string children. This is the first of two diffs for react as we'll: 1. Add the new property to the ViewConfig types 2. Update React Native to include the `supportsRawText` property for `RCTText`, `RCTVirtualText`, `AndroidTextInput`, etc. 3. Switch the behavior of react to read from the ViewConfig rather than a static list of types.
aafdf65
to
224892e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we make this change incremental? Eg check for supportsRawText
, and if not set or false, check the existing list of component names? That way we have to do less juggling to make this change atomic.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you add tests? I know that this just updates the types, but there should be some sort of tests for this behavior before we start implementing it. And the existing tests that are there are currently passing, but should fail without the changes @javache mentioned.
Here's where I would add them:
it('should console error for text not inside of a <Text> ancestor', async () => { |
@javache Not seeing the value in this, it's just as easy to:
As it is to:
|
@rickhanlonii if we are just adding types in this change, there's not really anything to test. The subsequent change after RN is updated to consume the new types will need to update the existing tests, which appear to have sufficient coverage. |
Yeah ok sure, we can add tests when we do step 3 to actually consume the prop in React. If you're going this route though, it would be easier to just add the props to the config with a FlowFixMe and remove the FlowFixMe after the behavior change lands. Then you could add the type, the behavior, and the tests all in one React PR. |
<!-- Thanks for submitting a pull request! We appreciate you spending the time to work on these changes. Please provide enough information so that others can review your pull request. The three fields below are mandatory. Before submitting a pull request, please make sure the following is done: 1. Fork [the repository](https://github.com/facebook/react) and create your branch from `main`. 2. Run `yarn` in the repository root. 3. If you've fixed a bug or added code that should be tested, add tests! 4. Ensure the test suite passes (`yarn test`). Tip: `yarn test --watch TestName` is helpful in development. 5. Run `yarn test --prod` to test in the production environment. It supports the same options as `yarn test`. 6. If you need a debugger, run `yarn test --debug --watch TestName`, open `chrome://inspect`, and press "Inspect". 7. Format your code with [prettier](https://github.com/prettier/prettier) (`yarn prettier`). 8. Make sure your code lints (`yarn lint`). Tip: `yarn linc` to only check changed files. 9. Run the [Flow](https://flowtype.org/) type checks (`yarn flow`). 10. If you haven't already, complete the CLA. Learn more about contributing: https://reactjs.org/docs/how-to-contribute.html --> ## Summary <!-- Explain the **motivation** for making this change. What existing problem does the pull request solve? --> Now that HostContext determination for Fabric is a DEV-only behavior, we can move the HostContext determination to resolve from the ViewConfig for a given type. Doing this will allow arbitrary types to register themselves as potential parents of raw text string children. This is the first of two diffs for react as we'll: 1. Add the new property to the ViewConfig types 2. Update React Native to include the `supportsRawText` property for `RCTText`, `RCTVirtualText`, `AndroidTextInput`, etc. 3. Switch the behavior of react to read from the ViewConfig rather than a static list of types. ## How did you test this change? <!-- Demonstrate the code is solid. Example: The exact commands you ran and their output, screenshots / videos if the pull request changes the user interface. How exactly did you verify that your PR solves the issue you wanted to solve? If you leave this empty, your PR will very likely be closed. --> - yarn test - yarn test --prod - Pulled change into react-native, added `supportsRawText` props to RCTText, RCTVirtualText, etc. ViewConfigs and confirmed everything type checks. DiffTrain build for commit a5cc797.
Summary
Now that HostContext determination for Fabric is a DEV-only behavior, we can move the HostContext determination to resolve from the ViewConfig for a given type. Doing this will allow arbitrary types to register themselves as potential parents of raw text string children. This is the first of two diffs for react as we'll:
supportsRawText
property forRCTText
,RCTVirtualText
,AndroidTextInput
, etc.How did you test this change?
supportsRawText
props to RCTText, RCTVirtualText, etc. ViewConfigs and confirmed everything type checks.