Webpack-dev-server with redux和react阻塞了我的输入
webpack-dev-server with redux and react is blocking my inputs
应用程序可访问此URL: http://91.142.210.160:3000/webpack-dev-server/
正如你所看到的,应用程序没有错误,但我不能真正点击文本输入并添加待办事项。
下面我会给你看我的文件,如果你需要更多的文件,请在评论中写下。
//app.js
import React from 'react';
import { render } from 'react-dom';
import { createStore } from 'redux';
import { Provider } from 'react-redux';
import reducer from './reducer';
import { TodoList } from './containers';
// ^^^^^^^^^^
const store = createStore(reducer);
render(
<Provider store={store}>
<TodoList />
</Provider>,
document.getElementById('app')
);
//Components.js import React from 'react';
export function Todo(props) {
const { todo } = props;
if(todo.isDone) {
return <strike>{todo.text}</strike>;
} else {
return <span>{todo.text}</span>;
}
}
export function TodoList(props) {
const { todos, toggleTodo, addTodo } = props;
const onSubmit = (event) => {
const input = event.target;
console.log("input", input);
const text = input.value;
const isEnterKey = (event.which == 13);
const isLongEnough = text.length > 0;
if(isEnterKey && isLongEnough) {
input.value = '';
addTodo(text);
}
};
const toggleClick = id => event => toggleTodo(id);
return (
<div className='todo'>
<input type='text'
className='todo__entry'
placeholder='Add todo'
onKeyDown={onSubmit} />
<ul className='todo__list'>
{todos.map(t => (
<li key={t.get('id')}
className='todo__item'
onClick={toggleClick(t.get('id'))}>
<Todo todo={t.toJS()} />
</li>
))}
</ul>
</div>
);
}
//containers.js import { connect } from 'react-redux';
import * as components from './components';
import { addTodo, toggleTodo } from './actions';
export const TodoList = connect(
function mapStateToProps(state) {
return { todos: state };
},
function mapDispatchToProps(dispatch) {
return {
addTodo: text => dispatch(addTodo(text)),
toggleTodo: id => dispatch(toggleTodo(id))
};
}
)(components.TodoList);
//actions.js const uid = () => Math.random().toString(34).slice(2);
export function addTodo(text) {
return {
type: 'ADD_TODO',
payload: {
id: uid(),
isDone: false,
text: text
}
};
}
export function toggleTodo(id) {
return {
type: 'TOGGLE_TODO',
payload: id
}
}
//reducer.js import { List, Map } from 'immutable';
const init = List([]);
export default function(todos=init, action) {
switch(action.type) {
case 'ADD_TODO':
return todos.push(Map(action.payload));
case 'TOGGLE_TODO':
return todos.map(t => {
if(t.get('id') === action.payload) {
return t.update('isDone', isDone => !isDone);
} else {
return t;
}
});
default:
return todos;
}
}
不确定是否与编程相关或我的浏览器配置对iframes过于严格
编辑1:我用以下命令启动了开发服务器:
webpack-dev-server——port 3000——host 0.0.0.0
这是我的webpack。config.jsmodule.exports = {
entry: './src/app.js',
output: {
path: __dirname,
filename: 'bundle.js'
},
devtool: 'source-map',
module: {
loaders: [
{
test: /'.js$/,
exclude: /node_modules/,
loader: 'babel',
query: { presets: [ 'es2015', 'react' ] }
}
]
}
};
您使用了错误的url。如果你用http://91.142.210.160:3000/访问你的应用程序,它工作得很好。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 我如何在数字插入中使用逗号,这样它就不会'不要破坏我的输入字段
- 为什么Jquery UI会擦除我的输入框
- 为什么获胜't我的输入值总和
- jQuery:在验证错误之后,我的输入掩码函数不会'Don’不要在野外工作
- 我的输入值'对话框窗体上的s;t更新
- 我的输入字段听到除回车之外的每个“键下”事件.我有一个日期选择器,不确定发生了什么
- 为什么我的输入接受所有值,即使我正在使用函数来防止这种情况
- IE不喜欢我的输入和图像标签
- 谷歌地图(它没有将结果显示到我的输入窗格中以保存到我的数据库中)
- 编码然后在 base64 中解码不会输出我的输入数组缓冲区
- 为什么我的 if 语句仅在我的输入具有值时才有效
- 为什么我的输入框的值没有返回
- jQuery/CoffeeScript/Rails 不会在我的输入上调用 change()
- Jquery - .prop 不会动态选中我的输入复选框
- 我想在搜索完成后保留我的输入字段数据
- 为什么我的输入被插入到具有相同索引的两个diff数组中?(js)
- 我的输入类型=“文本”未正确验证我的电子邮件地址
- 我的数据绑定有效,但我的输入ng模型是't更新时更新
- 为什么我的输入从未被隐藏