2017-03-08 46 views
-1

說按鈕文本值我有這樣的代碼:傳陣營圍繞

如何傳遞文本General圍繞作爲參數?即grep 2個按鈕標籤之間的所有文本?

我有一個功能,做到這一點:

selectChannel = (channelValue) => { 
    var x = document.getElementById("general").value; 
    this.setState({ channelValue: x }) 
    } 

但我不希望得到的數值爲必須是硬編碼的屬性。我希望能夠將General更改爲其他任何內容,例如Random這將是傳遞的價值。有任何想法嗎?

+1

真的很難理解你想達到什麼。 –

+2

這是一個好的開始。你應該把文本保存在'state'或者'prop'中。 – caisah

+0

@KrzysztofDąbrowski真的嗎?我只想點擊一個按鈕,並讓該按鈕的值對我可用... –

回答

3

我不確定這是否是您想要實現的內容,但您可以創建一個組件,該組件將呈現<button>任何以道具形式傳遞的文本。

組件:

<ButtonComponent text="General" /> 

組件的定義:

const ButtonComponent = (props) => { 
    const handleClick =() => { 
    console.log(props.text); 
    }; 

    return (
    <button onClick={ handleClick }>{ props.text }</button> 
); 
}; 

UPDATE(類符號相同的組件):

export default class ButtonComponent extends React.Component { 
    handleClick =() => { 
     console.log(this.props.text); 
    } 

    render() { 
     return (
      <button onClick={ this.handleClick }> 
       { this.props.text } 
      </button> 
     ); 
    } 
} 
+0

如果我已經設置好了我的道具,我該如何傳遞:'export default class Button extends React.Component {' –

+0

你可以簡單地引用'this.props'。我已經用不同的方式更新了我的評論o定義了相同的組件。 –

3

爲什麼不把它作爲變量硬編碼並傳遞變量?

render() { 
    var buttonText = "General"; 
    return (
    <button id="gnrl" onClick={() => this.selectChannel(buttonText)}>{buttonText}</button> 
) 
} 
+0

我不需要任何硬編碼,因爲我想使用任何值 –

+0

只要可用,您可以將buttonText的值設置爲該值。 –

0

我不認爲我有足夠的信息,但在這裏我去:我認爲你應該保持文本的組件的狀態如果在該組件定義。

如果可以以某種方式在祖先組件中生成文本,則應該在該組件的狀態下定義它,並將其作爲道具傳遞給包含該按鈕的組件。

0

了可以使用目標

selectChannel = (e) => { 
    console.log(e.target.innerHTML); 
} 

<button onClick={(e) => this.selectChannel(e)}>General</button>