0

FusionChart eventsprop が で正しく機能していないようですreact-native-fusioncharts。イベント オブジェクト (キーと値のペア) の最初のキーのみが発火/放出されます。

以下の例でconsole.log("bI");は、ログに記録されますが、他のイベントは記録されません。イベントonInitializedにもよるから仕方ない。renderComplete

しかし、イベントをコメントアウトするbeforeInitializeと、次のイベントが機能します。 onInitializedイベントは、小道具を送信しないeventsか、空のオブジェクトを渡さない場合にのみ機能します。

アップデート

iOS でのみ発生し、Android では問題なく動作します。

更新 2

このブログの「3.onMessage/postMessage」のポイント2を確認してください。

問題は、iOS で window.postMessage 呼び出しを連続して実行すると、メッセージが配信される前に毎回 URL が上書きされ、最後の呼び出しが優先されるため、最初の呼び出しが失われることです。


シナリオ 1

// myChart.js
...
import ReactNativeFusionCharts from "react-native-fusioncharts";


const _libraryPath = Platform.select({
    android: { uri: "file:///android_asset/fusioncharts.html" },
    ios: require("./../../../assets/fusioncharts.html")
});

export default class MyChart extends PureComponent {
    refChart = null;
    _chartApi = null;

    render() {
        return (
            <ReactNativeFusionCharts
                ref={(ref) => {
                    this.refChart = ref;
                }}
                .... // <-- Add necessary props
                libraryPath={_libraryPath}

                onInitialized={(chartApi) => {
                    console.log("onInitialized - API");    // <-- Not emitting
                    this._chartApi = chartApi;
                }}
                events={{
                    beforeInitialize: () => {
                        console.log("bI");     // <-- Will emit
                    },
                    initialized: () => {
                        console.log("i");    // <-- Not emitting
                    },
                    chartClick: () => {
                         console.log("cclk");    // <-- Not emitting
                    }
                }}
            />
        );
    }

}

シナリオ 2

// myChart.js
...
render() {
    return (
        <ReactNativeFusionCharts
            ref={(ref) => {
                this.refChart = ref;
            }}
            .... // <-- Add necessary props
            libraryPath={_libraryPath}

            onInitialized={(chartApi) => {
                console.log("onInitialized - API");    // <-- Not emitting
                this._chartApi = chartApi;
            }}
            events={{
                // beforeInitialize: () => {
                //     console.log("bI");
                // },
                // initialized: () => {
                //     console.log("i");
                // },
                chartClick: () => {
                     console.log("cclk");    // <-- Will emit
                }
            }}
        />
    );
}
...

バージョン:
react-native: 0.59.4
react-native-webview: 5.8.1
fusioncharts: 3.13.5
react-native-fusioncharts: 3.0.0

4

1 に答える 1