У меня есть объект employeeList, который содержит объекты employee, а затем у каждого объекта сотрудника есть объект person и объект address в нем, а person and address оба содержат свойства NSString, а также некоторую функцию, например. calculateAge().
Я хочу передать этот объект employeeList с нативной стороны нативной стороне реакции, но он принимает значение null, потому что RN-мост будет отправлять только приватные типы данных.
https://facebook.github.io/react-native/docs/native-modules-ios#argument-types
Как лучше всего преобразовать employeeList в объект JSON или вложенную карту, чтобы ее можно было просматривать на стороне RN?
Я думаю, вам нужно преобразовать свое лицо и адресные объекты в словари и разрешить их обратно на сторону JS.
@Andrew - Спасибо за комментарии, есть ли быстрый способ сделать это? (Besisdes использует библиотеку, я вижу, что RCTConvert делает противоположное)





Вы не может отправляете через мост objects с вложенными функциями как свойства того же object. Но вы можете отправить собственный функции / методы, объявленный в собственном модуле в Objective-C или Swift.
Я бы порекомендовал вам экспортировать функцию calculateAge() в нативный модуль. Эта функция получает в качестве параметра объект JSON employee, а возвращает желаемый возраст этого сотрудника, используя обратные вызовы или выдача событий.
хотя я бы использовал для этого конструкцию с Обещания. Также эта функция может быть вызвана, когда вы хотите, на стороне JS. Однако писать такую функцию в собственном модуле не имеет смысла, потому что вы можете выполнять ту же логику на стороне JS.
Экспорт функции в собственный модуль был бы полезен, если логике нужны дополнительные данные, которые выполняются только на собственной стороне.
Наконец, убедитесь, что вы экспортируете object (NSDictionary) со строкой ключи и ценности любого типа из этот список. Поэтому вам нужно преобразовать объект employeeList в объект JSON и удалить из него вложенные функции, чтобы избежать проблем совместимости.
Посмотрите все ответы здесь: stackoverflow.com/questions/10548429/… Может вам помочь. В основном для этого используйте библиотеку.