我有一個反應組件是一個窗體與各種領域,我希望能夠通過傳遞道具隱藏各個領域。 Id有一個名爲hideElements的道具,其中包含一個與表單元素的ref相匹配的id列表。Reactjs和添加類
如果我使用jquery通過它的ref獲取每個元素並在componentDidMount中添加一個「隱藏」類,它會導致反應問題嗎?有沒有更好的方法來做到這一點?
我有一個反應組件是一個窗體與各種領域,我希望能夠通過傳遞道具隱藏各個領域。 Id有一個名爲hideElements的道具,其中包含一個與表單元素的ref相匹配的id列表。Reactjs和添加類
如果我使用jquery通過它的ref獲取每個元素並在componentDidMount中添加一個「隱藏」類,它會導致反應問題嗎?有沒有更好的方法來做到這一點?
有沒有理由使用jQuery?你能否有條件地隱藏或不顯示渲染方法中的元素?
// Assuming props.hideElements = {'title' : true, 'email' : true};
render: function() {
var hideElements = this.props.hideElements;
return (
<div>
<input className={hideElements['title'] ? 'hide' : null} name="title" type="text"/>
OR
{hideElements['email'] ? null : <input name="email" type="text" />}
</div>
)
}
如果你想保持渲染方法更簡潔,你可以有邏輯的一個變量或函數,然後將結果輸出(或者您的元素或沒有)的其他地方。
render: function() {
return (
{this.renderInputTitle()}
{this.renderInputEmail()}
)
}
除了作爲我的背景,jQuery沒有什麼特別的原因,並且仍然在學習如何通過反應來實現類似的事情。這看起來不錯我會給它去 – Omiron
您可以使用ref在React中添加一個新類。
import React from "react";
export default class Text extends React.Component {
constructor() {
super()
}
click(){
this.refs.myDiv.className="box formControl inputBox";//using button to add a class
}
componentDidMount(){
this.refs.myDiv.className="box formControl inputBox";// add a class
}
render() {
return (
<div>
<div ref="myDiv"></div>
<button onClick={this.click.bind(this)}>click</button>
</div>
)
}
}
如果添加一個類實際上並不改變DOM中某些元素的存在,即使您應該避免它,也不應該成爲問題。如果您給組件的CSS類改變了DOM中組件的存在,它可能會導致React不知道元素不存在的事實。你想要做的是完全可行的反應方式,而不必使用jQuery。 –