อัปเกรดเป็น React พื้นเมือง 0.62.0 การรับสัญญาณเตือน - "การโทรหา` getNode () 'บนส่วนอ้างอิงขององค์ประกอบภาพเคลื่อนไหวไม่จำเป็นอีกต่อไป


10

ฉันเพิ่งอัพเกรดแอปตอบโต้ดั้งเดิมเป็น 0.62.0 และตอนนี้แอปของฉันยังคงได้รับสัญญาณเตือนนี้

ReactNativeFiberHostComponent: Calling `getNode()` on the ref of an Animated component 
is no longer necessary. You can now directly use the ref instead. 
This method will be removed in a future release.

ฉันไม่แน่ใจว่าทำไมปัญหานี้ถึงปรากฏขึ้น ใครช่วยอธิบายหน่อยได้ไหม?

ฉันยังเห็นสแต็ค

ref.getNode |
createAnimatedComponent.js:129:20

SafeView#_updateMeasurements | index.js:192:14

SafeView#componentDidUpdate | index.js:154:9

ปรับปรุง

ฉันเชื่อว่านี่อาจมาจาก SafeAreaView จากการตอบกลับการนำทาง

คำตอบ:


5

ฉันยังได้รับคำเตือนนี้หลังจากอัพเกรด ro RN 0.62.1 แล้วและฉันไม่ได้ใช้getNode()เลยกลับกลายเป็นว่ามันมาจากการพึ่งพาที่ฉันใช้เรียกว่าreact-native-snap-carouselเพราะพวกเขาสร้างมันด้วย FlatList และอาจใช้getNode()เช่นกัน

และตอนนี้มีปัญหาแบบเปิดเกี่ยวกับเรื่องนี้ใน repo ของ GitHub ที่เราสามารถติดตามได้นี่คือลิงค์ไปยังปัญหา

ปรับปรุง

นี่ก็มาจากแพ็คเกจreact-native-safe-area-viewซึ่งอาจเป็นไปได้ว่าแอปของคุณกำลังใช้แพคเกจนี้และตอนนี้พวกเขาได้เปิดตัวเวอร์ชันใหม่เพื่อแก้ไขการgetNode()คัดค้านโปรดดู PR นี้

ดังนั้นแทนที่จะแก้ไขไฟล์โดยตรงด้วยตัวเองคุณเพียงแค่ต้องอัปเดตแพ็คเกจเพียงแค่เรียกใช้: npm i react-native-safe-area-view

หวังว่าจะช่วย :)


2

หากต้องการแก้ไขอย่างรวดเร็วให้ไปที่ node_modules / react-native-safe-area-view => index.js

ที่ 192 สายการเปลี่ยนแปลง

this.view.getNode (). measureInWindow ((winX, winY, winWidth, winHeight)

ถึง

this.view.measureInWindow ((winX, winY, winWidth, winHeight)


ในตอนนี้คุณสามารถอัปเดตโมดูลโหนดได้แล้วnpm i react-native-safe-area-view
picacode

1

เท่าที่เห็นในโพสต์บล็อกประกาศเปิดตัว RN62 getNode()ตอนนี้เลิกใช้แล้ว คุณก็สามารถใช้โดยไม่ต้องโทรref getNode()ดูการกระทำนี้


1
สิ่งนี้คือฉันไม่ได้ใช้อะไรกับ getNode เป็นไปได้หรือไม่ว่าแพคเกจที่ฉันนำเข้ามานั้นใช้งานหรือไม่ ฉันไม่แน่ใจว่าจะดูได้อย่างไรว่าแพ็คเกจไหนใช้หรือไม่ มีวิธีง่าย ๆ ในการค้นหาหรือไม่?
hellomello

อัปเดต - ฉันคิดว่าอาจมาจาก SafeAreaView จากการตอบกลับการนำทาง
hellomello

1
ใช่คำเตือนอาจมาจากการพึ่งพาของคุณเช่นที่คุณพูดถึง
Ovidiu Latcu


0

ปัญหาจะเกิดขึ้นเมื่อคุณใช้ createAnimatedComponent สำหรับส่วนประกอบในขณะที่มันมีอยู่แล้วในไลบรารี่เคลื่อนไหวเช่นถ้าเราใช้มันไปที่ FlatList คำเตือนนี้จะแสดงขึ้นเพื่อแก้ไขมันเพียงแค่เรียกส่วนประกอบโดยตรง

สำหรับรายละเอียดเพิ่มเติมใส่ลิงค์คำอธิบายที่นี่


0

เปลี่ยนแปลง

return this._carouselRef && this._carouselRef.getNode && this._carouselRef.getNode();

ถึง

return this._carouselRef;

* การลบ getNode () จะแก้ไข


0

หากคุณกำลังใช้ react-native-snap-carouselคุณสามารถแก้ไขได้โดยแก้ไขโมดูลโหนดของคุณแบบโลคัล

ไปก่อน

 ./node_modules/react-native-snap-carousel/src/Carousel.js

เปลี่ยนแปลง

const AnimatedFlatList = FlatList ? Animated.createAnimatedComponent(FlatList) : null;
const AnimatedScrollView = Animated.Animated.createAnimatedComponent(ScrollView);

เข้าไป

const AnimatedFlatList = FlatList ? Animated.FlatList : null;
const AnimatedScrollView = Animated.ScrollView;

และสุดท้ายเปลี่ยน_getWrappedRefฟังก์ชั่นของคุณเป็น

_getWrappedRef () {
 return this._carouselRef
}

การดำเนินการนี้จะหยุดคำเตือนจนกว่าเราจะมีการอัปเดตในแพ็คเกจนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.