在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML5  Android  HTML/ Error updating 'src' of a view managed

Error updating 'src' of a view managed by MyRCTImageView

參考React Native官網(wǎng),在RN中調(diào)用Android UI 組件(RCTImageView)時(shí)候,出現(xiàn)如下錯(cuò)誤。

Error while updating property of 'src' of a view managed by MyRCTImageView
java.lang.String can not be cast to com.facebook.react.bridge.ReadableArray

下面是我的部分代碼。

// App.js
//RN中主界面 調(diào)用ImageView組件  傳入src參數(shù)
import ImageView from './ImageView';
...
render(){
   return(
       <ImageView
            src={this.state.imageSrc}
            borderRadius={this.state.borderRadius}
            resizeMode={this.state.resizeMode}
       />
   );
}
//ImageView.js
// RN中對(duì)android 原生UI組件封裝和調(diào)用  設(shè)置src屬性格式為PropTypes.string
let iface = {
name: 'ImageView',
    propTypes: {
        src: PropTypes.string,
        borderRadius: PropTypes.number,
        resizeMode: PropTypes.oneOf(['cover', 'contain', 'stretch']),
        ...ViewPropTypes, // include the default view properties
    },
};
const ImageView = requireNativeComponent('MyRCTImageView',iface);
export default ImageView;

從報(bào)錯(cuò)信息,我知道了對(duì)src應(yīng)該傳入一個(gè)數(shù)組類型,而不是string。我在Android中通過(guò)@ReactProp構(gòu)造了setSrc方法。但是我不知道如何調(diào)用該方法,以及,如何在RN中對(duì)src傳入一個(gè)數(shù)組。

各位知道如何解決嗎? 謝謝

//ReactImageManager.java
//Android中創(chuàng)建的UI 組件類

public class ReactImageManager extends SimpleViewManager<ReactImageView> {

    public static final String REACT_CLASS = "MyRCTImageView";

    @Override
    public String getName() {
        return REACT_CLASS; //返回值為在RN中引用的組件名稱值   RCTImageView
    }


    /**
     * 此處創(chuàng)建View實(shí)例,并返回
     * @param context
     * @return
     */

    @Override
    public ReactImageView createViewInstance(ThemedReactContext context) {
        return new ReactImageView(context, Fresco.newDraweeControllerBuilder(), null,null);

    }


    @ReactProp(name = "src" )
    public void setSrc(ReactImageView view, @Nullable ReadableArray sources) {
        view.setSource(sources);
    }

    @ReactProp(name = "borderRadius", defaultFloat = 0f)
    public void setBorderRadius(ReactImageView view, float borderRadius) {
        view.setBorderRadius(borderRadius);
    }

    @ReactProp(name = ViewProps.RESIZE_MODE)
    public void setResizeMode(ReactImageView view, @Nullable String resizeMode) {
        view.setScaleType(ImageResizeMode.toScaleType(resizeMode));
    }


}
回答
編輯回答
擱淺

你的setSrc方法接收一個(gè)readableArray,然而你在實(shí)際調(diào)用的時(shí)候卻傳了一個(gè)String, 所以報(bào)錯(cuò)。
解決方法:
<ImageView src={['']} />
或者更改setSrc的形參類型為String

2018年8月17日 00:33