簡體   English   中英

反應:綁定導出的函數時為“未定義”

[英]React: “Undefined” when binding an exported function

首先,我要說我是React和JS的新手,到目前為止,我閱讀的文檔並沒有幫助我解決這個問題,而且我似乎遇到了麻煩。

我有兩個js文件,一個是login.js,另一個是menu.js。 我正在嘗試將令牌(從login.js)輸出到由OnClick函數(在menu.js中)觸發的控制台,單擊時會收到未定義的錯誤。 最終目標是使我能夠訪問從login.js獲得的令牌,並將其用於其他文件和組件中,以便我可以在登錄后保留身份驗證。 我想念什么?

謝謝

**//login.js snippet**

var jsforce = require('jsforce');
var conn = new jsforce.Connection({
  oauth2 : {
    // you can change loginUrl to connect to sandbox or prerelease env.
    loginUrl : 'https://test.salesforce.com',
     clientId : '0123456789',
    clientSecret : '0123456789',
    redirectUri : 'https://test.salesforce.com/services/oauth2/token',
  }
});
conn.login(email, password, function(err, userInfo) {
  if (err) { return console.error(err,email,password);
 }
  // Now you can get the access token and instance URL information.
  // Save them to establish connection next time.
  //console.log(conn.accessToken);
  console.log(conn.instanceUrl);
  exports.token = conn.accessToken


  // logged in user property
  console.log("User ID: " + userInfo.id);
  console.log("Org ID: " + userInfo.organizationId);
  // ...
    //Forward na Profil screen
    setTimeout(function(){
      forwardTo('/menu');
    },1280);  


})





**//Menu.js snippet**

import React from 'react';
import ReactDOM from 'react-dom';
import { Link } from 'react-router';
import { render } from 'react-dom';
import login from '../pages/login.js';
var jsforce = require('jsforce');


onLinkClicked () {

    console.log(login.token)
  }


  render () {

    return (
        <div className='menubox' id='menubox'>

     <button
            type='submit'
            onClick={this.onLinkClicked.bind(this)}>
            Search
          </button>
      </div>
    )
  }



}



export default menuScreen;

您確定單擊登錄后登錄響應有效還是已加載? 您可以在chrome中使用開發人員工具並檢查響應是什么。

我能夠使用sessionStorage.setItem(“ token”,token);保存令牌。 在login.js中,並通過向onClick函數添加accessToken:sessionStorage.getItem('token')從menu.js中檢索令牌。 我想如果您想全局訪問身份驗證數據,可以使用sessionstorage。我能夠成功查詢該站點。 謝謝您的幫助!

**//login.js snippet**

var jsforce = require('jsforce');
var conn = new jsforce.Connection({
  oauth2 : {
    // you can change loginUrl to connect to sandbox or prerelease env.
    loginUrl : 'https://test.salesforce.com',
     clientId : '0123456789',
    clientSecret : '0123456789',
    redirectUri : 'https://test.salesforce.com/services/oauth2/token',
  }
});
conn.login(email, password, function(err, userInfo) {
  if (err) { return console.error(err,email,password);
 }

  var token = conn.accessToken;

  console.log(conn.instanceUrl);
  exports.token = conn.accessToken


  sessionStorage.setItem("token", token);


  // logged in user property
  console.log("User ID: " + userInfo.id);
  console.log("Org ID: " + userInfo.organizationId);
  // ...
    //Forward na Profil screen
    setTimeout(function(){
      forwardTo('/menu');
    },1280);  


})





**//Menu.js snippet**

import React from 'react';
import ReactDOM from 'react-dom';
import { Link } from 'react-router';
import { render } from 'react-dom';
import login from '../pages/login.js';
var jsforce = require('jsforce');





onLinkClicked () {
   var jsforce = require('jsforce');



var jsforce = require('jsforce');

var conn = new jsforce.Connection({
  serverUrl : 'https://cs63.salesforce.com',
  accessToken : sessionStorage.getItem('token')
 })
 conn.search("FIND {Un*} IN ALL FIELDS RETURNING Account(Id, Name), Lead(Id, Name)",
  function(err, res) {
    if (err) { return console.error(err); }
    console.log(res);
  }
)
}

      render () {

        return (
            <div className='menubox' id='menubox'>

         <button
                type='submit'
                onClick={this.onLinkClicked.bind(this)}>
                Search
              </button>
          </div>
        )
      }



}



export default menuScreen;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM