2017-06-17 47 views
0

我無法通過下面提供的代碼通過回調發送操作。該代碼不會發送操作。但是,我知道如果將屬性Connected連接到onClick等處理程序,它將會執行。如何讓我的代碼在沒有這些處理程序的情況下工作?與Redux反應:將子項傳遞給子組件,在子組件中調用時沒有處理程序

(注意:在這個例子中,我使用npm的MQTT.js庫)。

每次通過MQTT套接字接收到連接消息時,我都希望它更新存儲以在連接成功時告訴前端。但是,我需要將組件保留爲組件,而不是容器。

家長:

return (
    <MQTT 
    Connected={() => {this.props.sendAction('MQTT_CONNECTED')}} 
    > 
) 

兒童:

const MQTT = ({Connected}) => { 
    var client = mqtt.connect(mqttBroker, mqttConnectOptions); 
    client.on('connect', function() { 
    {Connected} 
    } 
    return <div>...</div>; 
} 

sendAction:

export function sendAction(action) { 
    return { 
    type: action 
    } 
} 

回答

1

我犯了一個錯誤,忘記了{Connected()}中的括號。 兒童應該是這樣的:

const MQTT = ({Connected}) => { 
    var client = mqtt.connect(mqttBroker, mqttConnectOptions); 
    client.on('connect', function() { 
    {Connected()} 
    } 
    return <div>...</div>; 
} 
+0

請編輯原始問題,不要使用答案來提供更新,或者如果此實際答案通過接受它來標記它。 – hardillb

+2

請使用您問題上的編輯鏈接添加其他信息。後回答按鈕應該只用於問題的完整答案。 - [來自評論](/ review/low-quality-posts/16448063) –

+0

@hardillb您也可以投票結束它,因爲這看起來像是一個錯字問題。 –

0

是否有任何理由,你不能只是叫你傳遞下來的Connected功能道具?

const MQTT = ({Connected}) => { 
    var client = mqtt.connect(mqttBroker, mqttConnectOptions); 
    client.on('connect', function() { 
    this.props.Connected() 
    return <div>...</div>; 
    } 
    return null; 
} 
+0

,將返回「類型錯誤:this.props是不確定的」,因爲我用{}連接的快捷方式。不過,我想明白了,謝謝你。我忘了包括括號,所以它實際上應該是{Connected()},而不是{Connected}。謝謝! – Joseph

+0

不錯!什麼是正確的代碼看起來像? –

+0

我剛剛回答了它,我只是在我的函數中忘記了括號。感謝您的幫助! – Joseph

相關問題