'Ошибка: `VideoPlayer` не имеет propType для собственного prop `VideoPlayerView.scaleY` собственного типа `number`
VideoPlayerView
это собственный нативный компонент, созданный в Android и IOS для моего конкретного проекта.
Вот часть кода экспорта собственного модуля с именем VideoPlayerView
сделано в ReactVideoManager.java
public class ReactVideoManager extends SimpleViewManager<MeasureChangedVideoView> {
public static final String REACT_CLASS = "VideoPlayerView";
private ThemedReactContext mReactContext;
@Override
public String getName() {
return REACT_CLASS;
}
@Override
protected MeasureChangedVideoView createViewInstance(ThemedReactContext reactContext) {
mReactContext = reactContext;
return new MeasureChangedVideoView(reactContext);
}
@ReactProp(name = "url")
public void setUrl(MeasureChangedVideoView view, @Nullable String url) {
Uri uri = Uri.parse(url);
view.setVideoURI(uri);
view.setMediaController(new MediaController(mReactContext));
view.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
}
}
Ниже приведен журнал ошибок, найденный для модуля:
Error: `VideoPlayer` has no propType for native prop `VideoPlayerView.scaleY` of native type `number`
Соответствующий компонент js для этого собственного представления - VideoPlayer.js:
var React = require('react-native');
var { requireNativeComponent } = React;
class VideoPlayer extends React.Component {
render() {
return <VideoPlayerView {...this.props} />;
}
}
VideoPlayer.propTypes = {
url: React.PropTypes.string
};
var VideoPlayerView = requireNativeComponent('VideoPlayerView', VideoPlayer);
module.exports = VideoPlayer;
Тот же самый модуль, который использовался для работы в другом проекте B. Единственное обнаруженное различие было в наличии файла act.gradle в проекте B.
Нет абсолютно никакой подсказки, где генерируется файл Reaction.gradle. Также я попытался перезапустить упаковщик, очистить здание проекта снова.
Зависимость gradle, используемая в проекте,
compile "com.facebook.react:react-native:0.14.+"
1 ответ
Следует определенно использовать последнюю версию, и способ, указанный в документации https://facebook.github.io/react-native/docs/native-components-android.html должен работать нормально.
Получается, что я использовал React версии 0.13+ (в package.json), а способ добавления свойств с использованием аннотации @Reactprop был введен в зависимости gradle 0.14, и этот способ не совсем хорошо работает со старой версией React- родной (0,13).
Если по какой-то причине вы работаете с 0.13 или pre, необходимо придерживаться способа смешивания реквизита вручную, как указано в https://github.com/facebook/react-native/issues/3478.