javascript - 移动的组件不做它的工作(react-redux)
问题描述
当我将组件移动到单独的文件时,它将无法工作。
我使用 redux 和 react
代码沙盒链接:https ://codesandbox.io/s/adoring-water-l35zj?fontsize=14&hidenavigation=1&theme=dark
此代码将起作用:
import React, { useState } from "react";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";
import configStore from "./store/store";
import { addTodo } from "./store/store";
const App = () => {
const [note, setNote] = useState("");
const [error, setError] = useState(false);
return (
<div>
<div>
<input
type={"text"}
value={note}
onChange={e => {
setNote(e.target.value);
}}
/>
<button
onClick={() => {
if (note !== "") {
store.dispatch(addTodo(note));
setNote("");
setError(false);
} else {
setError(true);
}
}}
>
SAVE
</button>
{error && <div>PLEASE ENTER A VALUE FOR TODO</div>}
{store.getState().map(todo => {
return <div key={todo.id}>{todo.note}</div>;
})}
</div>
</div>
);
};
const store = configStore();
console.log(store.getState());
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById("root")
);
但这不起作用:(index.js)
import React from "react";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";
import configStore from "./store/store";
import AddTodo from "./components/AddTodo";
const App = () => {
return (
<div>
<AddTodo />
{store.getState().map(todo => {
return <div key={todo.id}>{todo.note}</div>;
})}
</div>
);
};
const store = configStore();
console.log(store.getState());
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
document.getElementById("root")
);
(AddTodo.js):
import React, { useState } from "react";
import { connect } from "react-redux";
import { addTodo } from "../store/store";
const AddTodo = props => {
const [note, setNote] = useState("");
const [error, setError] = useState(false);
return (
<div>
<input
type={"text"}
value={note}
onChange={e => {
setNote(e.target.value);
}}
/>
<button
onClick={() => {
if (note !== "") {
props.addTodos(note);
setNote("");
setError(false);
} else {
setError(true);
}
}}
>
SAVE
</button>
{error && <div>PLEASE ENTER A VALUE FOR TODO</div>}
</div>
);
};
const mapDispatchToProps = dispatch => ({
addTodos: note => dispatch(addTodo(note))
});
export default connect(
undefined,
mapDispatchToProps
)(AddTodo);
我不明白为什么这行不通。
我是 react 和 redux 的初学者。我真的很乐意帮助我,请回答
解决方案
我已经从您的代码中创建了一个示例,并将 App 组件也移动到了一个单独的文件中。这是工作代码的链接。
推荐阅读
- c# - 如何在不等待内部方法完成的情况下立即返回“ok”
- java - RecyclerView 搜索过滤器在过滤结果后位置错误
- vscode-remote - 如何在 Windows 中通过 git bash 连接 vscode-remote-ssh 扩展?
- python - 在linux上安装pandas,只用一个python文件
- python - 如何使用文件名(如果提供)或标准输入(如果未提供 argparse)
- ios - UISearchBar 不会更改 iOS 12.1 的搜索图标和占位符颜色
- c++ - 如何重载流运算符以使用位于不同文件中的函数?
- python - 比较两个字符(在字符串内)如何在 Python 中工作
- flutter - 在 DropdownButton 中选择项目时出现断言错误
- css - 为什么 CSS Grid 元素宽度不会在自动流上调整大小:MS Edge 中的列?