如何使用react-alert在组件中显示消息?

时间:2019-10-15 19:31:15

标签: javascript reactjs react-native alert toast

我正在使用reactjs。 我想在带有react-alert组件的组件中显示警报。 https://www.npmjs.com/package/react-alert 我将给定的位置包装index.js文件。

但是当我尝试在表单中使用alert.show ("sdfsdfsdfsf")时,出现以下错误。

我是否以表格形式显示消息?

index.js

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App/App';

import { transitions, positions, Provider as AlertProvider } from 'react-alert'
import AlertTemplate from 'react-alert-template-basic'

import { Provider } from 'react-redux';

const options = {
    // you can also just use 'bottom center'
    position: positions.BOTTOM_CENTER,
    timeout: 5000,
    offset: '30px',
    // you can also just use 'scale'
    transition: transitions.SCALE
};
ReactDOM.render(
    <Provider store={store}>
        <AlertProvider template={AlertTemplate} {...options}>
            <App/>
        </AlertProvider>
    </Provider>,
document.getElementById('root'));

myForm.js

import { useAlert } from "react-alert";
const alert = useAlert();
class myForm extends Component {
  constructor(props) {
    super(props);
.........

render() {
return(
<div> alert.show("Alert test") </div>
)
}

2 个答案:

答案 0 :(得分:1)

您正在使用:

render(){                                                            
  return(
  <div> alert.show("Alert test") </div>                                    
   )
}

但是您需要使用一个事件来显示该警报。

改为使用此:

render(){ 
  return(                                                                
    <div                                                             
      onClick={() => 
        {alert.show('Alert test')}
      }
    />
  )
}

答案 1 :(得分:0)

除非用大括号括起来,否则您不能在render方法内调用函数/方法。 jsx中需要大括号,以使解析器知道您要运行一些javascript代码。

尝试以下操作:

render() {
   return (
     <div>{alert.show("Alert test")}</div>
   );
}

使用onClick处理程序时,npm上的react-alert包也有一个很好的示例 https://www.npmjs.com/package/react-alert

const App = () => {
  const alert = useAlert()

  return (
    <button
      onClick={() => {
        alert.show('Oh look, an alert!')
      }}
    >
      Show Alert
    </button>
  )
}

export default App