victory-native:使用胜利条形图时,事件道具在本机反应中不起作用/事件在本机反应中不触发
victory-native : events props not working in react native / event not firing in react native when using victory bar chart
我正在尝试实现 Victor 条形图,当用户单击条形图时我想在其中执行一些操作。但是当使用文档中给出的事件道具这样做时(使用 docs 中给出的相同示例代码)但是事件没有触发。
您还可以使用此 link...ClickMe
查看我在 snack.expo.io 上的实现
包版本是:
"react-native-svg": "^9.4.0",
"victory-native": "^32.0.2",
"expo": "^33.0.0",
"react": "16.8.3",
"react-dom": "^16.8.6",
"react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
这里有相同的代码供您参考...
注意: 我也用了'onPressIn','onClick'和'onPress',这两个都不行。
<VictoryBar
data={[
{x: 1, y: 2, label: "A"},
{x: 2, y: 4, label: "B"},
{x: 3, y: 7, label: "C"},
{x: 4, y: 3, label: "D"},
{x: 5, y: 5, label: "E"},
]}
events={[
{
target: "data",
eventHandlers: {
onPressIn: () => {
return [{
target: "labels",
mutation: (props) => {
return props.text === "clicked" ?
null : { text: "clicked" }
}
}];
}
}
}
]}
/>
请帮帮我
如果您对单词执行此操作,事件将像文档一样正常运行。
<VictoryBar
data={[
{x: 1, y: 2, label: "A"},
{x: 2, y: 4, label: "B"},
{x: 3, y: 7, label: "C"},
{x: 4, y: 3, label: "D"},
{x: 5, y: 5, label: "E"},
]}
events={[{
target: "data",
eventHandlers: {
onPress: () => {
return [
{
mutation: (props) => {
return props.text === "clicked" ?
null : { text: "clicked" }
}
}
];
}
}
}]}
/>
尝试将 VictoryBar 包裹在 VictoryChart 中。 TouchableOpacity 中的 VictoryChart 是这样的
<TouchableOpacity onPress={...}>
<VictoryChart containerComponent={<VictoryContainer disableContainerEvents />}
...>
<VictoryBar
... />
</VictoryChart>
</TouchableOpacity>
像这样将它包装在 Svg
中对我有用:
<Svg>
<VictoryPie
height={280}
colorScale={pie_chart_color}
data={this.state.data}
style={...}
events={[...]}
/>
</Svg>
在我的例子中,使用 TouchableOpacity 包装图表仅适用于 ios,使用 svg 包装适用于 android。所以我只需要根据平台切换包装器,
const ChartClick=Platform.select({
ios: TouchableOpacity,
android: Svg
});
我用它作为 ,
<ChartClick>
<VictoryChart>
</VictoryChart>
</ChartClick>
我的包版本是:react-native-svg:9.0.0,victory-native:34.0.0
我正在尝试实现 Victor 条形图,当用户单击条形图时我想在其中执行一些操作。但是当使用文档中给出的事件道具这样做时(使用 docs 中给出的相同示例代码)但是事件没有触发。 您还可以使用此 link...ClickMe
查看我在 snack.expo.io 上的实现包版本是:
"react-native-svg": "^9.4.0",
"victory-native": "^32.0.2",
"expo": "^33.0.0",
"react": "16.8.3",
"react-dom": "^16.8.6",
"react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
这里有相同的代码供您参考...
注意: 我也用了'onPressIn','onClick'和'onPress',这两个都不行。
<VictoryBar
data={[
{x: 1, y: 2, label: "A"},
{x: 2, y: 4, label: "B"},
{x: 3, y: 7, label: "C"},
{x: 4, y: 3, label: "D"},
{x: 5, y: 5, label: "E"},
]}
events={[
{
target: "data",
eventHandlers: {
onPressIn: () => {
return [{
target: "labels",
mutation: (props) => {
return props.text === "clicked" ?
null : { text: "clicked" }
}
}];
}
}
}
]}
/>
请帮帮我
如果您对单词执行此操作,事件将像文档一样正常运行。
<VictoryBar
data={[
{x: 1, y: 2, label: "A"},
{x: 2, y: 4, label: "B"},
{x: 3, y: 7, label: "C"},
{x: 4, y: 3, label: "D"},
{x: 5, y: 5, label: "E"},
]}
events={[{
target: "data",
eventHandlers: {
onPress: () => {
return [
{
mutation: (props) => {
return props.text === "clicked" ?
null : { text: "clicked" }
}
}
];
}
}
}]}
/>
尝试将 VictoryBar 包裹在 VictoryChart 中。 TouchableOpacity 中的 VictoryChart 是这样的
<TouchableOpacity onPress={...}>
<VictoryChart containerComponent={<VictoryContainer disableContainerEvents />}
...>
<VictoryBar
... />
</VictoryChart>
</TouchableOpacity>
像这样将它包装在 Svg
中对我有用:
<Svg>
<VictoryPie
height={280}
colorScale={pie_chart_color}
data={this.state.data}
style={...}
events={[...]}
/>
</Svg>
在我的例子中,使用 TouchableOpacity 包装图表仅适用于 ios,使用 svg 包装适用于 android。所以我只需要根据平台切换包装器,
const ChartClick=Platform.select({
ios: TouchableOpacity,
android: Svg
});
我用它作为 ,
<ChartClick>
<VictoryChart>
</VictoryChart>
</ChartClick>
我的包版本是:react-native-svg:9.0.0,victory-native:34.0.0