在React-Native中,我可以将hitSlop值添加到StyleSheet.create吗?

时间:2017-12-18 11:56:32

标签: react-native

在React-Native中,我在hitSlop组件中定义了TouchableHightlight道具。我想知道是否可以将属性添加到函数StyleSheet.create()以及它是否也有意义?

以下是我的代码示例:

const styles = StyleSheet.create({
});

const MyComp = () => (
  <TouchableHighlight hitSlop={{ top: 8, left: 8, right: 8, bottom: 8 }}>
  </TouchableHighlight>
)

3 个答案:

答案 0 :(得分:2)

传递给hitSlop的对象具有严格定义的键,仅限于顶部,左侧,底部和右侧。 StyleSheet.create()的结果是不兼容的类型,因此会抛出这样的错误:

  

NSNumber类型的JSON值'84'无法转换为UIEdgeInsets

以下是错误示例:

Simulator error example

答案 1 :(得分:1)

我不这么认为

StyleSheet是一种类似于CSS StyleSheets的抽象。样式表仅适用于样式属性(如高度,宽度,颜色等)。

由于hitSlop更像是一个特征而不是一个样式,我认为它不应该是StyleSheet属性的一部分。

答案 2 :(得分:1)

hitSlop绝对不能成为StyleSheet的一部分,但是您可以为该值创建一个变量,这样就不会在每个渲染器上重新创建该变量。

const MY_COMP_HIT_SLOP = { top: 8, left: 8, right: 8, bottom: 8 }

const MyComp = () => (
  <TouchableHighlight hitSlop={MY_COMP_HIT_SLOP}>
  </TouchableHighlight>
)

这实际上是React Native的人们在一个类似的道具上​​推荐的:pressRetentionOffsetreference