iOS中的ReactNative FusionChart事件不会发出/触发。只有第一个会发光

时间:2019-06-17 07:06:51

标签: javascript reactjs react-native fusioncharts react-native-webview

FushionChart events道具在react-native-fusioncharts中似乎无法正常工作。仅事件对象(配对的键值)中的第一个键会触发/发出。

在下面的示例中,将记录console.log("bI");,但不会记录任何其他事件。甚至没有onInitialized,因为它取决于renderComplete事件。

但是,如果我们注释掉beforeInitialize事件,则下一个事件将起作用,依此类推。 onInitialized事件仅在我们不发送events道具或传递空对象的情况下才有效。

更新

仅在iOS中发生,并且在Android上运行良好。

场景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

1 个答案:

答案 0 :(得分:0)

您可以直接在内绑定FusionCharts事件以响应本机FusionCharts指令,以查看此代码段-

<FusionCharts
            type={this.state.type}
            width={this.state.width}
            height={this.state.height}
            dataFormat={this.state.dataFormat}
            dataSource={this.state.dataSource}
            events={this.state.events}
            libraryPath={this.libraryPath} // set the libraryPath property
          />

有关更多详细信息,请查看此链接-https://github.com/fusioncharts/react-native-fusioncharts#working-with-events