在React中使用外部脚本功能

Utilize external script function in React?

本文关键字:外部 脚本 功能 React      更新时间:2023-09-26

我试图将Twilio Video客户端脚本加载到我的React + Rails项目中。在index.html中,我有两个来自Twilio的外部脚本:

<script src="https://media.twiliocdn.com/sdk/js/conversations/v0.13/twilio-conversations.min.js"></script>

我不知道如何从React组件访问Twilio,以便我可以开始在我的应用程序中使用这个脚本。必须是一个不需要动脑筋的方法,对吗?

如果您将Twilio作为脚本标签包含在index.html中,则可以在全局范围内访问它:

// App.js
const App = (function(Component) { // mock imports
  class App extends Component {
    render() {
      // Twilio globally accessible
      return (
        <pre>
          {Object.keys(Twilio.Conversations).join(', ')}
        </pre>
      );
    }
  }
  
  return App; // mock expoort
})(React.Component);
// index.js
(function(App, render) { // mock imports
  render(<App />, document.getElementById('app'));
})(App, ReactDOM.render);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.js"></script>
<script src="//media.twiliocdn.com/sdk/js/conversations/v0.13/twilio-conversations.min.js"></script>
<div id="app"></div>

可能更清楚的例子:http://www.webpackbin.com/4JhaBpybf

unminified twilio-conversations.js:

(function(root) {
   ...
  if (typeof define === 'function' && define.amd) {
    define([], function() { return Conversations; });
  } else {
    var Twilio = root.Twilio = root.Twilio || {};
    Twilio.Conversations = Twilio.Conversations || Conversations;
  }
})(typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : this);