facebook / react-native

A framework for building native applications using React
https://reactnative.dev
MIT License
118.4k stars 24.25k forks source link

Uncontrolled input value clears when color is changed #43403

Open BalogunofAfrica opened 6 months ago

BalogunofAfrica commented 6 months ago

Description

Setting color in style prop for an uncontrolled input based on focus clears the TextInput's value. example:

...
    <TextInput
      onBlur={onBlur}
      onFocus={onFocus}
      placeholder={placeholder}
      style={[
        {
          color: isFocused ? "#f00" : "#000",
        },
      ]}
    />
...

isFocused is set based on onBlur and onFocus.

This same issue is not noticed for a controlled input. I have also linked a repro link with both cases side by side.

Affected platform: Android

Steps to reproduce

  1. Run the application with npx react-native run-android
  2. Interact with controlled input (notice normal behaviour)
  3. Interact with uncontrolled input, notice value of input disappearing when you blur the focus

React Native Version

0.73.5

Affected Platforms

Runtime - Android

Output of npx react-native info

System:
  OS: macOS 14.2.1
  CPU: (10) arm64 Apple M1 Pro
  Memory: 179.17 MB / 16.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 18.19.1
    path: ~/.nvm/versions/node/v18.19.1/bin/node
  Yarn:
    version: 1.22.21
    path: ~/.bun/bin/yarn
  npm:
    version: 10.2.4
    path: ~/.nvm/versions/node/v18.19.1/bin/npm
  Watchman:
    version: 2023.12.04.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /opt/homebrew/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.2
      - iOS 17.2
      - macOS 14.2
      - tvOS 17.2
      - watchOS 10.2
  Android SDK: Not Found
IDEs:
  Android Studio: 2022.3 AI-223.8836.35.2231.10811636
  Xcode:
    version: 15.1/15C65
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 17.0.10
    path: /usr/bin/javac
  Ruby:
    version: 2.6.10
    path: /usr/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.73.5
    wanted: 0.73.5
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: Not found
  newArchEnabled: false

Stacktrace or Logs

N/A

Reproducer

https://github.com/BalogunofAfrica/react-native-textinput-bug

Screenshots and Videos

https://github.com/facebook/react-native/assets/45393944/91a05b3e-06c1-4ca5-ac39-74d0da2522d7

elliscwc commented 6 months ago

I have similar issue but this time is when selection is set. Only on Android, tested on v0.73.6, but it happens starting on v0.72.

<View>
  <TextInput style={{backgroundColor: '#000', color: '#fff', paddingHorizontal: 20}} selection={{start: 0, end: 0}} multiline>
    Text will disappear because it is in the children and "selection" is set
  </TextInput>
</View>

https://github.com/facebook/react-native/assets/29953232/36cd1ddf-f23e-4509-899e-5fda8c5ec219

KirillRodichevUtorg commented 3 months ago

Same for me, but not only with focus based conditions