- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试存储一组 Session 对象。每个 Session 都有一个 Hand 对象数组。我正在尝试建立一个 Redux 商店,但由于某种原因我无法使用 mapStateToProps 访问我的商店。 this.props.* 中的所有选项都与我的 redux 存储无关。
我的商店应该包含一组 session 对象,我想在一个简单的 FlatList 中显示这些对象,以便在创建自定义 FlatList 之前了解概念。我展示了一个示例,说明了我想要使用 State 的确切内容,但我无法让它与 Redux 一起使用。
我的 {this.props.sessions} 没有显示任何内容,我希望它显示 session 的名称,就像状态按钮一样。
我尝试了很多不同的配置,包括翻阅 this.props.* 试图找到输出信息的东西。
我什至尝试在 Redux 中使用一个简单的“Count”变量,看看我是否可以让它工作,但也没有用。
这里有潜在的问题吗?
我的应用程序运行正常,但是当我按下“使用 redux 添加新 session ”按钮时,它什么也没做。
//*HOME.JS
import React from 'react';
import { StyleSheet, View, Text, Button, FlatList} from 'react-native';
import { connect } from 'react-redux';
import { SessionObject } from './Session';
var session = new SessionObject("Session", []);
class Home extends React.Component {
state = {
SessionList : [],
SessionCount : 1
}
render() {
const { navigate } = this.props.navigation;
return (
<View style={styles.container}>
<View style={styles.container}>
<Text>Home Screen!! :)</Text>
</View>
<View style={styles.style_flex3}>
<Button title="Add new Session with State" onPress={() => this.addItem() } />
<FlatList
data={this.state.SessionList}
renderItem={({item}) => this.SessionComponent(item)}
keyExtractor={(item, index) => index.toString()}
/>
<Text>{this.props.sessions}</Text>
<Text>{this.props.Count}</Text>
<Button title="Add new Session with Redux!" onPress={() => this.addNewSession() } />
<FlatList
data={this.props.sessions}
renderItem={({item}) => this.SessionComponent(item)}
keyExtractor={(item, index) => index.toString()}
/>
</View>
</View>
);
}
addItem = () => { //USING STATE
this.setState((state, props) => ({
SessionList : [...state.SessionList, new SessionObject(state.SessionCount)],
SessionCount : state.SessionCount + 1,
}));
};
addNewSession = () => { //USING REDUX
var newSession = new SessionObject("new-Session", []);
this.props.addSession(newSession);
};
}
const mapStateToProps = (state) => {
return {
sessions: state.reducer
};
};
const mapDispatchToProps = (dispatch) => {
return {
addSession: (newSession) => {
dispatch({
type: "ADD_SESSION",
payload: newSession
});
}
};
};
export default connect(mapStateToProps, mapDispatchToProps)(Home);
//*STORE.JS
import React from 'react';
import { createStore } from 'redux';
import { SessionObject } from './screens/Session';
//var newSession1 = new SessionObject("Default", []);
const initialState = {
currentSession: undefined,
SessionList: [],
//Count: 0,
}
export const reducer = (state = initialState, action) => {
switch (action.type) {
case "ADD_SESSION":
state = {
...state,
currentSession: action.payload,
SessionList: [...state.SessionList, action.payload]
};
...
}
return state;
};
const store = createStore(reducer);
export default store;
//THIS IS WHERE I WANT
TO ACCESS THIS.PROPS.SESSIONS
<Text>{this.props.sessions}</Text>
<Text>{this.props.Count}</Text>
<Button title="Add new Session with Redux!" onPress={() =>
this.addNewSession() } />
<FlatList
data={this.props.sessions}
renderItem={({item}) => this.SessionComponent(item)}
keyExtractor={(item, index) => index.toString()}
/>
我想在 Flatlist 中显示我的 redux 存储中的 session 列表,并且我希望“添加”按钮在我点击它时创建更多 session 。
(基本上重新创建 this.State 已经在做的事情,但是使用 redux)。
编辑:这是我的 App.js 文件,我在其中使用了 Provider。这是使用提供者的不正确方式吗?
import React from 'react';
import { createStackNavigator, createAppContainer } from 'react-navigation';
import { Provider } from 'react-redux';
import store from './store';
import Home from './screens/Home';
import Session from './screens/Session';
import Hand from './screens/Hand';
export default class App extends React.Component {
render() {
return (
<Provider store={store}>
<AppContainer />
</Provider>
);
}
}
//creating the stack navigation variable
const AppStackNavigator = createStackNavigator({
Home: Home,
Session: Session,
Hand: Hand,
})
//Contains the app navigation variable,
//using a navigator variable
const AppContainer = createAppContainer(AppStackNavigator);
最佳答案
您需要附加 Provider 以使 redux store 可用于您连接的组件。您可以在此处找到正确的说明:https://react-redux.js.org/api/provider .如果您还有其他问题,请告诉我。
编辑:
您的提供商已正确连接。
我相信我发现了你的问题。由 redux 管理的应用程序状态是 reducer 返回的状态。所以,如果你想从状态中获取SessionList
,你应该使用
const mapStateToProps = (state) => {
return {
sessions: state.SessionList
};
};
关于javascript - 为什么我不能在 React-Native Redux 中从我的 mapStateToProps 访问我的 this.state.props session 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56520325/
我正在尝试使用 mapStateToProps 像这样: const mapStateToProps = (state: { logedIn: boolean; } ) => { return {
这个问题在这里已经有了答案: React - User-Defined JSX Components Not rendering (1 个回答) 4年前关闭。 我正在尝试创建一个使用 mapState
我有这个错误: TypeError: Cannot read property 'map' of undefined 并且不知道如何this.props.movies未定义,而我将initialS
我正在学习如何从头开始实现 redux,并且遇到了组件重新渲染的问题。我在 StackOverflow 上搜索这个问题已经产生了无数的结果,其中问题的答案总是“你改变了你的状态”。我已经阅读了 con
react/redux 新手。想知道为什么我的组件在触发操作时没有刷新。也不确定 reducer 是否是操作存储的好地方,但它是纯粹的,所以它应该可以工作。 发生的情况是操作被触发并且存储被更新。但是
我现在正在开发一个项目,其中涉及相当多的团队,并且变量初始化和传递到商店的地方有点困惑。 商店看起来主要是这样的。 const initialState = { myStoreData: nu
我知道我们可以通过这样做轻松地在组件状态中发送 mapStateToProps 的内容: constructor(props){ super(props); this.state = {
import React, { Component, Fragment } from "react"; import { connect } from "react-redux"; import {
我是 react 新手,无法调试为什么 mapStateToProps 没有运行。请参阅 login.js 中的最后一个函数。 我已在 mapStateToProps 函数中添加了警报语句,但它只是没
我正在调用我的 API 以使用其 ID 获取特定对象。 当我在 mapStateToProps 方法中调用 console.log 时,打印了整个对象,但状态的“anuncio”属性未定义当我尝试使用
我正在用头撞墙。我已经使用 React+Redux 顺利运行了一段时间,然后我使用 Chrome 删除了我的 localStorage,一切都变得一团糟。现在我无法让 mapStateToProps
我的 React 应用程序遇到一些问题。我正在尝试对用户进行身份验证并从后端获取一些数据,而 mapStateToProps 没什么问题。这就是我成功获得唯一用户的方法: const mapStat
我正在尝试使用 redux 将员工数据存储在商店中,但是当我尝试使用 mapStateToProps 访问商店时,它返回空数组,并且被调用两次。第一次状态有值,但第二次当我检查它时它会返回空数组 re
有没有类似mapStateToProps的函数,可以让我们在React中把Redux状态连接到函数式组件上? 将状态作为 props 从父组件传递是唯一的解决方案吗? 最佳答案 您绝对可以将 mapS
我刚开始玩 react/redux。我只想输入一些文本并点击提交,然后将其传递给另一个组件,该组件将显示输入的内容。 我知道我可以从 A 点到 B 点获取数据,因为如果我使用 store.subscr
我有一个带有 Redux 存储的 React 应用程序,它连接到 websocket 并在表格中向用户显示信息。我有 RxJs 中间件,它连接到 websocket 并使用内容分派(dispatch)
我说的是 connect 的 mapStateToProps 参数. 我的一个组件有一个名为 rules 的属性,它是一个函数数组。在 mapStateToProps 中,我调用这些规则,传入当前状态
我正在学习 React 和 Redux,发现了以下我无法理解的问题,我存储了一个可能如下所示的配置对象: { general:{duration:100,strength:100},
我需要访问容器内 redux 状态的特定属性。这些属性将依次用作获取其他嵌套属性并将它们映射到组件 props 的键。我使用immutableJS。 是在 mapStateToProps 中执行此操作
我正在寻找有关处理 mapStateToProps 中错误的最稳健、最可靠方法的建议,以及是否建议在 React+Redux 应用程序中尝试此级别。 例如,如果我将 react-redux 的 con
我是一名优秀的程序员,十分优秀!