reactjs - Action Creator 和 Reducer 不是 console.logging,但组件是连接的
问题描述
我正在尝试将 React 组件连接到动作创建者并将动作分派给减速器并渲染数据。我使用 Redux 作为状态管理。我不确定为什么它不是控制台日志记录,因为它显示我连接的动作创建者很好。
另外我想知道你宁愿使用 redux promise 作为中间件还是 redux thunk?
搜索栏.js
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { searchArtist } from './actions';
class SearchBar extends Component{
constructor(){
super();
this.state = {
query:'test'
}
this.handleChange = this.handleChange.bind(this);
this.clearForm = this.clearForm.bind(this);
// this.searchArtist = this.searchArtist.bind(this);
}
clearForm(e){
this.setState({
query:''
})
}
handleChange(e){
this.setState({
query:e.target.value
});
}
render(){
console.log(this.props)
return (
<div>
<form onSubmit={this.props.searchArtist}>
<label>Search For Your Favourite Song</label>
<input type="text" value={this.state.query} onClick={this.clearForm} onChange={this.handleChange}/>
<input type="submit" value="Submit"/>
</form>
</div>
)
}
}
function mapStateToProps(state){
return{
search:state.search
}
}
export default connect(mapDispatchToProps, mapStateToProps)(SearchBar);
动作创建者
index.js
import axios from 'axios';
import { FETCH_API } from './types';
export function searchArtist(term){
const request = axios.get(`https://api.spotify.com/v1/artists/{term}`);
return{
type: FETCH_API,
payload:request
}
}
店铺
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import registerServiceWorker from './registerServiceWorker';
import { Provider } from 'react-redux';
import reducers from './reducers';
import { createStore, applyMiddleware } from 'redux';
import reduxThunk from 'redux-thunk';
const store = createStore(reducers, {}, applyMiddleware(reduxThunk));
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById('root'));
registerServiceWorker();
解决方案
connect
声明应该是
export default connect(mapStateToProps,mapDispatchToProps)(SearchBar);
正如 mapDispatchToProps
以错误的顺序指定的那样,没有function/action
映射到container
.As 结果没有调用任何动作,所以没有reducers
。Hense,action & reducers
没有记录任何东西。
推荐阅读
- react-native - 原生基础 FloatingLabel 焦点样式
- python - 如何使用 Python 更改或清除 Jira 中分辨率字段的值?
- wordpress - 无法导入磁盘空间不足。无法将内容写入文件。文件:/opt/bitnami/apps/wordpress/htdocs/wp-content/uploads 错误
- android - Android导航组件 - 如何“popBackStack”到不存在的目的地
- c - 如何在 gcc 或 g++ 编译器上使用编译不同的文件扩展名,例如“a.test”而不是“.c .cpp”
- .net - 如何安装 Sitecore 的试用版
- javascript - 如何在反应单页应用程序中隐藏 XHR 请求?
- node.js - 如何更新子文档?
- node.js - 代理长文件上传请求时出现断管错误
- javascript - 这个视频播放图标是如何在 html 按钮上生成的,而不提供任何来源?