I am trying to add tag inside the component for the React Native app. Below is my code and it doesn't seem to work.
Could anyone please tell me how to solve this issue?
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import Dimensions from 'Dimensions';
import {StyleSheet, View, TextInput, Image, Text} from 'react-native';
export default class Chatbot extends Component {
render() {
return (
<View>
<Text>Testing</Text>
<script type="text/javascript">
window.__be = window.__be || {};
window.__be.id = "5b3a47b4b30a36000769d821";
(function() {
var be = document.createElement('script'); be.type = 'text/javascript'; be.async = true;
be.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'cdn.botengine.ai/widget/plugin.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(be, s);
})();
</script>
</View>
);
}
}
My guess is that the code you are writing will not run in a browser.
The script tag serves to tell the BROWSER: "Hey browser, stop. We got some javascript here. Execute it", so you should forget about the script tag.
You could do that logic in componentDidMount
instead.
import React, {Component} from 'react';
import PropTypes from 'prop-types';
import Dimensions from 'Dimensions';
import {StyleSheet, View, TextInput, Image, Text} from 'react-native';
export default class Chatbot extends Component {
componentDidMount() {
window.__be = window.__be || {};
window.__be.id = "5b3a47b4b30a36000769d821";
(function() {
var be = document.createElement('script'); be.type = 'text/javascript'; be.async = true;
be.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'cdn.botengine.ai/widget/plugin.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(be, s);
})();
}
render() {
return (
<View>
<Text>Testing</Text>
</View>
);
}
}
You cannot execute code depending on browser environment on react-native. try to run it inside a WebView component. https://facebook.github.io/react-native/docs/webview.html