如何在Objective C中使用RCT_EXPORT_VIEW_PROPERTY检测属性更改?

Ste*_*ath 3 objective-c react-native react-native-ios

RCT_EXPORT_MODULE()

- (UIView *)view
{
  return [[RNNativeListview alloc] initWithBridge:self.bridge];
}

RCT_EXPORT_VIEW_PROPERTY(rowHeight, float)
RCT_EXPORT_VIEW_PROPERTY(numRows, NSInteger)
Run Code Online (Sandbox Code Playgroud)

我想在js更新numRows时重新加载我的UITableView.我该怎么听?

Ale*_*hin 6

我不认为KVO是一个很好的解决方案.

您只需覆盖numRows属性的setter:

- (void)setNumRows:(NSInteger)numRows {
    _numRows = numRows;
    [self.tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用RCT_CUSTOM_VIEW_PROPERTY:

RCT_CUSTOM_VIEW_PROPERTY(numRows, NSInteger, RNNativeListview) {
    view.numRows = [RCTConvert NSInteger:json];
    [view.tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)