访问反应

时间:2018-04-13 02:48:32

标签: reactjs css3

如何根据当前元素的状态有条件地添加标题,即当前元素的text-overflow:ellipses属性被触发时?

<div className="shortDiv" 
     :title={isTruncated(CURRENT_ELEMENT) ? long_data : null}>
  {{long_data}}
</div>

我无法使用ref="shortDiv" ... isTruncated(this.shortDiv.current),因为 isTruncated 中的this[ref]会返回 undefined 。我已经检查了this,它是反应组件,但refs是一个空对象。

所以,我使用的方法是这样的:

  isTruncated (ref) {
    let el = this[ref].current

    return (el.offsetWidth < el.scrollWidth)
  }

它附加的元素的一个例子是:

<figcaption ref="figcaption-name" 
            title={this.isTruncated('figcaption-name')? name: null}>

1 个答案:

答案 0 :(得分:0)

使用州。

android {
    ...
    productFlavors {
        appFlavor1 {
            //MatchingFallbacks is required because of its dependencies to the project 'library'
            matchingFallbacks = ['libFlavor1', 'libFlavor2']
            //Don't use dependencies node here, it will add dependencies to the other flavors
        }
        appFlavor2{/*no need to use matchingFallbacks here, there is no dependencies to project 'library'*/}
    }
    ...
}

dependencies {
    appFlavor1Implementation project(':library')
}

或者像这样的州来管理你的整个元素

constructor(props){
    super(props);
    this.state = { 
        elementContent: <div>CONTENT HERE</div>,
        title: "TITLE",
    }

那么当你改变元素的状态时,它会动态改变内容。

constructor(props){
    super(props);
    this.state = { 
        element_to_truncate:{
            content:  <div>CONTENT HERE</div>,
            title: "TITLE",
            is_truncated: false,
            other_variables: ...
        }
    }

然后在您想要处理isTruncated()vs long_data的任何地方,将状态设置为值,以便它始终更改。所以,也许:

<div className="shortDiv" 
     :title={this.state.elementTitle}>
</div> 

无需使用ref或currentElement业务。